companion object {
var funAfterPermission: (() -> Unit)? = null
}
上述代码段中伴随对象的用途是什么?line
的含义是什么? var funAfterPermission: (() -> Unit)? = null
答案 0 :(得分:1)
你的行意味着有一个名为funAfterPermission
的var接受一个函数(high order functions)作为参数,它返回java中的void等效值它接受一个没有参数的方法。 var本身默认为null,可以为null。
var funAfterPermission: (() -> Unit)? = null
示例:
fun test(): (() -> Unit)? {
println("test")
return null
}
funAfterPermission = test()
它就像几种语言的eval。它在另一个函数中调用某些东西但是没有分配任何东西,因为它返回Unit。
companion objects用于获取"静态"来自java的行为。您可以使用YourClass.funAfterPermission = ....
答案 1 :(得分:1)
companion object
是Java中单身人士的替代品。
() -> Unit
代表一名代表。它可以分为()
和Unit
。 ()
表示委托不应接受任何参数。 Unit
表示委托不返回任何内容(与Java中的void相同)。组合它们意味着它是一个委托,不需要任何参数,也不会返回任何内容。
(() -> Unit)?
表示委托可以为空。
例如,(Int, String) -> String
表示它要求第一个参数为Int
,第二个参数为String
,并返回String
。
class Foo {
var greeting: () -> Unit = this::helloWorld
fun helloWorld() {
}
fun hello() {
greeting()
}
}
委托由::
语法分配,可以像普通函数一样调用。