11

在下面的示例中,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 = ????
}
4

2 回答 2

11

使用t::x.setter,它返回一个MutableProperty0.Setter<T>,它可以用作一个函数:

val setter = t::x.setter
setter("abc")
于 2017-03-18T12:31:07.667 回答
5

t::xis的返回类型KMutableProperty0<String>,它有一个setter属性,所以你可以这样做:

val setter: (String) -> Unit = t::x.setter
setter("B")
println(getter()) // prints B now
于 2017-03-18T12:30:52.863 回答