本文共 1925 字,大约阅读时间需要 6 分钟。
一、什么是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: Function { /** Invokes the function. */ public operator fun invoke(): R}/** A function that takes 1 argument. */public interface Function1 : Function { /** Invokes the function with the specified argument. */ public operator fun invoke(p1: P1): R}/** A function that takes 2 arguments. */public interface Function2 : Function { /** 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 : Function { /** 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 : Function { /** 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}
六、源码位置