在下面的示例中,t::x
返回对属性getter的引用。如何为二传手获得同样的东西?
class Test(var x: String) {}
fun main(args: Array<String>) {
val t = Test("A")
val getter: () -> String = t::x
println(getter()) // prints A
val setter: (String) -> Unit = ????
}
答案 0 :(得分:6)
使用t::x.setter
,它会返回MutableProperty0.Setter<T>
,可用作函数:
val setter = t::x.setter
setter("abc")
答案 1 :(得分:2)
t::x
的返回类型为KMutableProperty0<String>
,其属性为setter
,因此您可以这样做:
val setter: (String) -> Unit = t::x.setter
setter("B")
println(getter()) // prints B now