一.普通lambda
lambda定义:
lambda就是将一小段代码封装成匿名函数,以参数值的方式传递到函数中,供函数使用。
val sum = { x:Int, y:Int ->
x + y
}
lambda表达式始终用花括号包围,并用 -> 将参数列表和函数主体分离。当lambda自行进行类型推导时,最后一行表达式返回值类型作为lambda的返回值类型。现在一个函数必需的参数列表、函数体和返回类型。
函数类型
函数类型和lambda一样,使用 -> 作分隔符,但函数类型是将参数类型列表和返回值类型分开,所有函数类型都有一个圆括号括起来的参数类型列表和返回值类型。
//无参、无返回值的函数类型(Unit 返回类型不可省略)
() -> Unit
//接收T类型参数、无返回值的函数类型
(T) -> Unit
//接收T类型和A类型参数、无返回值的函数类型(多个参数同理)
(T,A) -> Unit
//接收T类型参数,并且返回R类型值的函数类型
(T) -> R
//接收T类型和A类型参数、并且返回R类型值的函数类型(多个参数 同理)
(T,A) -> R
//复杂函数类型
(T,(A,B) -> C) -> R
当显示声明lambda的函数类型时,可以省去lambda参数列表中参数的类型,并且最后一行表达式的返回值类型必须与声明的返回值类型一致:
val min:(Int,Int) -> Int = { x,y ->
//只能返回Int类型,最后一句表达式的返回值必须为Int
//if表达式返回Int
if (x < y){
x
}else{
y
}
}