关于 Kotlin 的 ::

学习视频: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)

你可能感兴趣的:(Kotlin)