println
下面的 Kotlin 代码中前面的双冒号是什么意思?
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
}
Run Code Online (Sandbox Code Playgroud)
代码打印:
第一个属性:你好
来自Kotlin 文档的 ::
意思是:
创建成员引用或类引用。
在您的示例中,它与成员引用有关,因此您可以将函数作为参数传递给另一个函数(又名First-class function)。
如输出所示,您可以看到使用字符串值also
调用println
,因此该also
函数可能会在调用之前检查某些条件或进行一些计算println
。您可以使用lambda 表达式重写您的示例(您将获得相同的输出):
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also{value -> println(value)}
}
Run Code Online (Sandbox Code Playgroud)
您还可以编写自己的函数来接受另一个函数作为参数:
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
fun andAlso (block : (String) -> Int): Int{
return block(firstProperty)
}
}
fun main(args : Array<String>) {
InitOrderDemo("hello").andAlso(String::length).also(::println)
}
Run Code Online (Sandbox Code Playgroud)
将打印:
第一个属性:你好
21
归档时间: |
|
查看次数: |
3057 次 |
最近记录: |