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
}
相关推荐
I'm Jie19 小时前
Gradle 多模块依赖集中管理方案,Version Catalogs 详解(Kotlin DSL)
android·java·spring boot·kotlin·gradle·maven
zhangphil1 天前
Kotlin管道Channel融合flow流,协程实现Android废弃的AsyncTaskLoader(A)
kotlin
tangweiguo030519871 天前
Android 插件化开发完全指南(Kotlin DSL/Gradle KTS 配置)
android·kotlin
モンキー・D・小菜鸡儿1 天前
Android BottomSheetBehavior 使用详解
android·kotlin
sinat_384241091 天前
从零开始打造一个 Android 音乐播放器(Kotlin + Jetpack Compose)
android·开发语言·kotlin
消失的旧时光-19431 天前
Android(Kotlin) ↔ Flutter(Dart) 的“1:1 对应表”:架构分层来对照(MVVM/MVI 都适用)
android·flutter·kotlin
zhangphil2 天前
Kotlin协程flow缓冲buffer任务流,批次任务中选取优先级最高任务最先运行(二)
kotlin
IT乐手2 天前
在 Kotlin 中创建 DSL
kotlin
蓬松的毛球2 天前
kotlin 协程原理分析 - StateFlow 和 SharedFlow 原理
kotlin
常利兵2 天前
Kotlin Flow 从入门到实战:异步数据流处理的终极解决方案
android·kotlin