文章目录
双冒号::
Kotlin 中可以使用双冒号::
对某一变量、函数进行引用。
Note:
MyClass::class
可用于获取KClass<MyClass>
,此时的双冒号::
并不是引用。
引用函数
有时候我们定义了一个函数,我们想让某个变量值为该函数,或者想把该函数作为参数传入另一个函数,可以借助::
。
普通函数
kt
fun myFun() { println("myFun") }
fun otherFun(block: () -> Unit) = block()
fun main() {
val function = ::myFun
function()
otherFun(::myFun)
}
myFun
myFun
成员函数
kt
class MyClass {
fun example() = print("MyClass.example")
}
fun main() {
val myClass = MyClass()
val example = myClass::example
example()
}
MyClass.example
类构造函数
kt
class MyClass
fun main() {
val constructor = ::MyClass
val myClass: MyClass = constructor()
}
引用变量(很少用)
普通变量
kt
val name = "Kotlin"
fun main() {
val kProperty0: KProperty0<String> = ::name
print(kProperty0.get())
}
Kotlin
成员变量
kt
class MyClass {
val name = "MyClass"
}
fun main() {
val myClass = MyClass()
val kProperty0: KProperty0<String> = myClass::name
print(kProperty0.get())
}
Kotlin
Note:你不能引用参数:
ktfun myFun(name: String, block: () -> Unit) { // 这是错误的 // ::name // ::block }