Java8中引入,匿名函数。java
普通的Lambda表达式相似对应kotlin普通函数的声明,而带接收者的lambda表达式则相似对应kotlin的扩展函数。bash
{ variable -> body_of_function}
示例:{ x:Int, y:Int -> x + y }
函数
lambda表达式始终用花括号包围,实参并无用括号括起来。箭头把实参列表和lambda的函数体隔开spa
示例:val sum = { x: Int, y: Int -> x + y }
code
能够把lambda表达式存储在一个变量中,把这个变量当作普通函数对待,也能够直接写做函数参数。开发
val isOddNumber = { number: Int ->
println("number is $number")
number % 2 == 1
}
复制代码
lambda表达式返回值老是返回函数体内部最后一行表达式的值get
fun main(args: Array<String>) {
val add= {
left: Int, right: Int
->
left + right
}
println(add.invoke(2, 3))
}
复制代码
一个变量 add,赋值为一个 Lambda 表达式。Lambda 表达式用一对大括号括起来,后面先依次写下参数及其类型,若是没有就不写,接着写下 -> ,这代表后面的是函数体了,函数体的最后一句的表达式结果就是 Lambda 表达式的返回值,好比这里的返回值就是参数求和的结果。后面咱们用 () 的形式调用这个 Lambda 表达式,其实这个 () 对应的是 invoke 方法。string
注意:语法简化是把双刃剑,简化当然不错,使用简单方便,可是不能滥用,也须要考虑到代码的可读性.上图中Lambda化简成的最简单形式用it这种,通常在多个Lambda嵌套的时候不建议使用,严重形成代码可读性,到最后估计连开发者都不知道it指代什么了。io