1.Lambda表达式
//无参数
val test = { println("无参数")}
//有参数
val test1:(Int,Int) -> Int= {a,b ->a+b}
val test2 = {a:Int,b:Int -> a+b}
//lambda表达式作为函数中的参数
fun test3(a:Int, b: ())
2.Lambda语法
-
it
- it并不是kotlin的一个关键字
2.it是在当一个高阶函数中Lambda表达式的参数只有一个的时候可以使用it来使用此参数。it可表示为单个参数的隐式名称,是Kotlin语言约定的。
下划线(_)
在使用Lambda表达式的时候。可以使用下划线来表示未使用的参数,表示不处理这个参数-
匿名函数
fun(x : Int , y : Int) : Int = x + y
- 匿名函数的特点是可以明确指定其返回值类型
- 它和常规函数的定义几乎相似。他们的区别在于,匿名函数没有函数名。
匿名函数与Lambda表达式的几点区别:
1. 匿名函数的参数传值,总是在小括号内部传递。而Lambda表达式传值,可以有省略小括号的简写写法。
2. 在一个不带标签的return语句中,匿名函数时返回值是返回自身函数的值,而Lambda表达式的返回值是将包含它的函数中返回。- 待接收者的函数字面值
val iop = fun Int.( other : Int) : Int = this + other println(2.iop(3) //输出:5
- 闭包
所谓闭包,即是函数中包含函数,这里的函数我们可以包含(Lambda表达式,匿名函数,局部函数,对象表达式)。我们熟知,函数式编程是现在和未来良好的一种编程趋势。故而Kotlin也有这一个特性。