学习视频:https://mp.weixin.qq.com/s/SkXgevDiQF9T4kyoL4_qVg
对于 Kotlin,存在一个 「函数类型」的概念,即表示某个变量类型是一个函数类型,但是要注意,函数类型并不是一个通用类型,而一个指代的名词。
(a: Int)->Unit
(a: Int)->String
上面即对应着两种函数类型,第一个是 (a: Int)->Unit
类型,第二个是 (a: Int)->String
类型。
于是,可以在 Kotlin 的函数传递函数类型的变量(底层实现是包装成对象)。就连普通的函数也可以被传递,只要跟函数类型规定的参数、返回值能够对应上即可,以及借助 ::
。
fun testMethod(para:((a: Int)->String)) {
// TODO
}
// 顶级函数
fun method1(para: Int) {
return para+" for string"
}
class TestClass {
// 成员函数
fun method2(para: Int) {
return para+" for string"
}
}
// 使用顶级函数
testMethod(::method1)
val tmp = TestClass()
// 使用成员函数
testMethod(tmp::method2)