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
}
相关推荐
Harry技术1 小时前
Trae搭建Android 开发中 MVVM 架构,使用指南:组件、步骤与最佳实践
android·kotlin·trae
q5673152316 小时前
使用reqwest+select实现简单网页爬虫
开发语言·爬虫·golang·kotlin
tangweiguo0305198720 小时前
面向对象编程三剑客:Dart、Java 和 Kotlin 的核心区别
android·flutter·kotlin
幼稚园的山代王21 小时前
Kotlin数据类型
android·开发语言·kotlin
zhangphil21 小时前
Android实现Glide/Coil样式图/视频加载框架,Kotlin
android·kotlin
pengyu1 天前
【Kotlin系统化精讲:陆】 | 数据类型之类型系统及精髓:安全性与智能设计的哲学
android·kotlin
Kapaseker1 天前
Kotlin runBlocking 可不要乱用!
android·kotlin
alexhilton2 天前
用Compose中的Shader实现一个雪花飘飘弹窗效果
android·kotlin·android jetpack
IT古董2 天前
【第四章:大模型(LLM)】05.LLM实战: 实现GPT2-(6)贪婪编码,temperature及tok原理及实现
android·开发语言·kotlin
zhangphil3 天前
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
android·kotlin