Kotlin:使用扩展属性设置器覆盖自身

时间:2019-04-28 08:37:50

标签: kotlin

我想要一个可以替换原始值的Kotlin属性。例如:

var String.setString
    get() = "ignorethis"
    set(value) = this = value

(我实际上是在UBytes上使用它来为上下半字节添加getter和setter)。

但是,在上面的示例中,我得到Variable expected.可以使用扩展属性来修改this吗?

1 个答案:

答案 0 :(得分:0)

String 是不可变的,你只能在像这样的可变类型上这样做:

fun main() {
    val x = mutableListOf("old")
    x.setString = mutableListOf("New Pro Max Extra Large Plus")
    println(x)
}

var <T> MutableList<T>.setString
    get() = this
    set(value) = value.forEachIndexed { idx, it -> this[idx] = it } ```