三种函数格式
1,函数字面值
1.1,Lambda
1.2,匿名函数
2,反射引用普通函数
3,实现函数类型接口的类
首先定义一个需要函数作为参数的函数
fun myFunIns(data:Int, myFun:(arg:Int)->Int):Int{
return myFun(data)
}
注意其中定义的函数类型是 (arg:Int)->Int ,也即参数是一个Int,返回一个Int
这是第一种格式,即函数字面值的Lambda表示法
var result1 = myFunIns(123, {
it * 2
})
上面利用 it 做了简化。也可以将 lambda 抽取出来,此刻无法使用 it 简化:
var result1 = myFunIns(123, {
data ->
data * 2
})
第二种格式,是函数字面值的匿名函数
var result2 = myFunIns(123, fun(data:Int):Int{
return data * 3
})
同样,匿名函数可以抽取出来
val result2_fun = fun(data:Int):Int{ //We can extract it out
return data * 3
}
第三种是反射引用格式
fun myFun(data:Int):Int{
return data * 4
}
val result3 = myFunIns(123, ::myFun)
第四种是偶然看到的,通过一个类实现一个接口,该接口有一个函数。
class MyFun:(Int)->Int{
override operator fun invoke(data:Int):Int{
return data * 5
}
}
val result4 = myFunIns(123, MyFun())
比较绕,尚不知何种情况使用
实践代码:https://gist.github.com/maxyou/6527b0f2019704ce7ae257d5cb17791b
本文介绍了Kotlin中函数类型的四种实例化方式:1) Lambda表达式;2) 匿名函数;3) 反射引用;4) 实现函数类型接口的类。通过具体的代码示例,详细解析了每种方式的用法和特点。
919

被折叠的 条评论
为什么被折叠?



