在下面的Kotlin代码中,println
前的双冒号是什么意思?
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
}
代码显示:
第一个属性:你好
答案 0 :(得分:2)
来自Kotlin documentation ::
的意思是:
创建成员引用或类引用。
在您的示例中,它是关于成员引用的,因此您可以将一个函数作为参数传递给另一个函数(也称为First-class function)。
如输出所示,您可以看到also
用字符串值调用了println
,因此also
函数可能会在调用{{1 }}。
您可以使用lambda expression(您将获得相同的输出)来重写示例:
println
您还可以编写自己的函数以接受另一个函数作为参数:
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also{value -> println(value)}
}
将打印:
第一个属性:你好
21
答案 1 :(得分:-1)
双冒号,只是kotlin惯用的方式来调用拥有对象的引用
class InitOrderDemo(name: String) {
val helicopter : String = "BlackWater"
fun wheresHeli() : String{
return ::helicopter // this Kotlin Idiomatic way of doing calling from that live object(Object thats in memory
// In other languages you write return this.helicopter
}
}