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

推荐答案

Use t::x.setter, it returns a MutableProperty0.Setter<T>, which can be used as a function:

val setter = t::x.setter
setter("abc")

Kotlin相关问答推荐

查看流数据和改进的HTTP请求的模型

插入/更新/upsert时不发出房间流

我需要后台工作才能使用卡夫卡的消息吗?

如何在数据类中删除空格 (String)?

为何Kotlin标准库中的AND和OR函数不能像&&和||一样进行短路运算?

Kotlin 复制列表中的项目以创建具有相同数据的不同对象的新列表

Kotlin 函数有 2 个参数用于对 Map 或 List 进行排序

使用空键映射获取

Kotlin 使用迭代索引过滤 lambda 数组

参考 Kotlin 中的 Java 接口静态字段

使用 Kotlin 创建新目录,Mkdir() 不起作用

什么是开放式property?为什么我不能将其设置器设为private私有?

Kotlin使用运行时断言进行空判断?

禁用 IntelliJ kotlin * 导入?

如何将 Kotlin 日期中的字符串或时间戳格式化为指定的首选格式?

大小写敏感性 Kotlin / ignoreCase

使用主构造函数时使用Kotlin getter/setter

kotlin 委托有什么用?

Kotlin for assertThat(foo, instanceOf(Bar.class))

如何判断数据是否插入到房间数据库中