Kotlin的Lambda表达式

简介: 一、什么是Lambda表达式 就是匿名函数 写法:{[参数列表] -> [函数体,最后一行是返回值]} **举例:**val sum = {a: Int, b: Int -> a+b}二、Lambda 的类型 ()-...

一、什么是Lambda表达式
就是匿名函数
写法:{[参数列表] -> [函数体,最后一行是返回值]}
**举例:**val sum = {a: Int, b: Int -> a+b}

二、Lambda 的类型
()-> Unit
无参,返回值为Unit

(Int) -> Int
传人整型,返回一个整型

(String,(String) -> String)->Boolean
传入字符串、Lambda表达式,返回Boolean

三、Lambda表达式的调用
用()调用
等价于invoke()
举例:
定义一个:val sum = {a: Int,b: Int -> a+b}
调用一下:sum(2,3)
sum.invoke(2,3)

四、首先来写一个例子

//Lambda表达式,传人两个(Int,Int)-> Int
 val sum = {arg1: Int, arg2: Int ->
    //println("$arg1 + $arg2 = ${arg1 + arg2}")
    arg1 + arg2
}

五、找到kotlin的Functions源码
因为是从0开始的,可以看到最多参数只能有23个

package kotlin.jvm.functions

/** A function that takes 0 arguments. */
public interface Function0<out R> : Function<R> {
    /** Invokes the function. */
    public operator fun invoke(): R
}
/** A function that takes 1 argument. */
public interface Function1<in P1, out R> : Function<R> {
    /** Invokes the function with the specified argument. */
    public operator fun invoke(p1: P1): R
}
/** A function that takes 2 arguments. */
public interface Function2<in P1, in P2, out R> : Function<R> {
    /** Invokes the function with the specified arguments. */
    public operator fun invoke(p1: P1, p2: P2): R
}
......
/** A function that takes 21 arguments. */
public interface Function21<in P1, in P2, in P3, in P4, in P5, in P6, in P7, in P8, in P9, in P10, in P11, in P12, in P13, in P14, in P15, in P16, in P17, in P18, in P19, in P20, in P21, out R> : Function<R> {
    /** Invokes the function with the specified arguments. */
    public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8, p9: P9, p10: P10, p11: P11, p12: P12, p13: P13, p14: P14, p15: P15, p16: P16, p17: P17, p18: P18, p19: P19, p20: P20, p21: P21): R
}
/** A function that takes 22 arguments. */
public interface Function22<in P1, in P2, in P3, in P4, in P5, in P6, in P7, in P8, in P9, in P10, in P11, in P12, in P13, in P14, in P15, in P16, in P17, in P18, in P19, in P20, in P21, in P22, out R> : Function<R> {
    /** Invokes the function with the specified arguments. */
    public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8, p9: P9, p10: P10, p11: P11, p12: P12, p13: P13, p14: P14, p15: P15, p16: P16, p17: P17, p18: P18, p19: P19, p20: P20, p21: P21, p22: P22): R
}

六、源码位置
这里写图片描述

目录
相关文章
|
28天前
|
存储 Kotlin
Kotlin中的Lambda表达式基本定义和使用
Kotlin中的Lambda表达式基本定义和使用
14 2
|
28天前
|
存储 Kotlin
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
15 1
|
28天前
|
存储 开发者 Kotlin
Kotlin Lambda表达式与标准库中的高阶函数
Kotlin Lambda表达式与标准库中的高阶函数
13 1
|
7天前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式有哪些用法
Kotlin的Lambda表达式是匿名函数的简洁形式,常用于集合操作和高阶函数。基本语法是`{参数 -&gt; 表达式}`。例如,`{a, b -&gt; a + b}`是一个加法lambda。它们可在`map`、`filter`等函数中使用,也可作为参数传递。单参数时可使用`it`关键字,如`list.map { it * 2 }`。类型推断简化了类型声明。
10 0
|
7天前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
**Kotlin中的匿名函数与Lambda表达式概述:** 匿名函数(`fun`关键字,明确返回类型,支持非局部返回)适合复杂逻辑,而Lambda(简洁语法,类型推断)常用于内联操作和高阶函数参数。两者在语法、返回类型和使用场景上有所区别,但都提供无名函数的能力。
8 0
|
27天前
|
开发者 Kotlin
Kotlin中List的Lambda表达式应用与解析
Kotlin中List的Lambda表达式应用与解析
14 0
|
27天前
|
Kotlin
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
12 0
|
11月前
|
安全 Java 编译器
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
Kotlin 作为 Android 开发的首选语言,其基础语法和特性需要重点学习。本文概括总结了 Kotlin 的基本类型、关键字、函数、闭包、高阶函数、类与对象等核心知识点,并给出示例代码进行讲解。
163 0
Kotlin 学习笔记(一)—— 基本类型、函数、lambda、类与对象的写法
|
数据安全/隐私保护 Kotlin
Kotlin表达式(中缀、分支、When)
1、中缀表达式 只有一个参数,且用infix修饰的函数 例如: //书 class Book{ //infix 自定义运算符的中缀表达式。
1192 0
|
10天前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
26 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?