Setter Kotlin 中的重载

Setter overloading in Kotlin

当尝试定义接受可用于构造 属性 的参数类型的 setter 时,因此:

class Buffer(buf: String) {}

class Foo {
    var buffer: Buffer? = null
        set(value: String) {
            field = Buffer(value)
        }
}

我收到错误消息:

Setter parameter type must be equal to the type of the property

那么 Kotlin 这样做的方式是什么意思?

从 Kotlin 1.1 开始,无法重载 属性 设置器。功能请求在此处跟踪:

https://youtrack.jetbrains.com/issue/KT-4075

目前,您必须在 String 上定义一个 buffer 扩展函数:

val String.buffer : Buffer
    get() = Buffer(this) 

并使用

设置值
Foo().buffer = "123".buffer