Kotlin 引用(双冒号::)

文章目录

双冒号::

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:你能引用参数:

kt 复制代码
fun myFun(name: String, block: () -> Unit) {
   // 这是错误的
   // ::name
   // ::block
}
相关推荐
用户097 小时前
Kotlin Flow的6个必知高阶技巧
android·面试·kotlin
用户097 小时前
Jetpack Compose静态与动态CompositionLocal深度解析
android·面试·kotlin
Jeled18 小时前
「高级 Android 架构师成长路线」的第 1 阶段 —— 强化体系与架构思维(Clean Architecture 实战)
android·kotlin·android studio·1024程序员节
明道源码20 小时前
Kotlin 控制流、函数、Lambda、高阶函数
android·开发语言·kotlin
橙子1991101620 小时前
在 Kotlin 中,ViewModel 的获取
开发语言·vue.js·kotlin
hweiyu0020 小时前
Gradle 构建脚本迁移:从 Groovy DSL 到 Kotlin DSL,语法与技巧对比
开发语言·kotlin·gradle
消失的旧时光-194320 小时前
搞懂 Kotlin 的 List、Set、Map、HashMap、LinkedHashMap,以及 asSequence() 的底层原理与实战场景。
kotlin·数据处理·1024程序员节
明道源码20 小时前
Kotlin 面向对象编程、主构造函数、次构造函数、伴生对象、数据类、继承
kotlin·1024程序员节
消失的旧时光-19431 天前
Kotlin × Gson:为什么遍历 JsonObject 要用 entrySet()
android·kotlin·数据处理·1024程序员节
AH_HH2 天前
SmartCabinet:基于 Android 的智能储物柜管理系统技术解析
android·kotlin·存储柜