Kotlin高阶函数的使用
高阶函数定义lambda表达式定义:Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)函数类型 (String,Int)->Unit
·
Lambda表达式
- Lambda表达式
{x: Int, y: Int -> x + y}
->左边是参数和参数类型,右边返回值
函数类型定义
- (String,Int)->Unit为一个函数类型,即参数、-> 、返回值组成
高阶函数定义-Heigher-Order-Functions
- 高阶函数定义:参数类型是函数类型,或者返回值是函数类型的函数称为高阶函数,除此之外函数类型还能赋值给变量
fun gaojie(name1: Int, name2: Int, operation: (Int, Int) -> Int): Int {
return operation(name1, name2)
}
高阶函数的调用
- 本质:kotlin「函数其实并不能传递,传递的是对象」,因为只有对象才可以作为参数、返回值、赋值变量。又因为匿名函数、lambda表达式其实就是一个函数类型的对象,所以可以如下调用。
fun gaojie(name1: Int, name2: Int, operation: (Int, Int) -> Int): Int {
return operation(name1, name2)
}
fun add(name1: Int, name2: Int): Int {
return name1 + name2
}
fun minus(name1: Int, name2: Int): Int {
return name1 - name2
}
- 调用方法1:双冒号加函数名(Function Reference)
val name = gaojie(name1, name2, ::add)
- 调用方法2:匿名函数
gaojie(name1, name2, fun(name1: Int, name2: Int): Int {
return name1 + name2
})
- 调用方法3,: Lambda表达式
gaojie(name1,name2){ a,b ->
a+b
}
kotlin中Lambda的应用
fun setOClickListener(onClick: (View) -> Unit){
this.onClick = onClick;
}
view. setOClickListener(fun (v: View): Unit{
//dosomeing
});
匿名函数写成Lambda表达式
view. setOClickListener({ v: View ->{
//dosomeing
}
})
如果Lambda是函数最后的一个参数的话,可以把Lambda写在括号的外面
view. setOClickListener(){ v: View ->{
//dosomeing
}
}
如果Lambda是函数的唯一的参数,又可以把括号去了
view. setOClickListener{ v: View ->{
//dosomeing
}
}
如果Lambda的参数是单参数,参数类型和参数名也可以省略
view. setOClickListener{
//dosomeing
}
更多推荐

所有评论(0)