kotlin lambda 基础知识

一.普通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
    }
}

二.带接收者的lambda表达式

https://www.jianshu.com/p/791758395264

你可能感兴趣的:(kotlin lambda 基础知识)