作为函数引用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