作为函数引用Kotlin类属性setter
在下面的例子中, 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 = ???? }
使用t::x.setter
,它返回一个MutableProperty0.Setter<T>
,它可以作为一个函数使用:
val setter = t::x.setter setter("abc")
t::x
的返回类型是KMutableProperty0<String>
,它有一个setter
属性,所以你可以这样做:
val setter: (String) -> Unit = t::x.setter setter("B") println(getter()) // prints B now