小编Man*_*eus的帖子

kotlin setter无限递归

我正在测试Android上的kotlin并遇到一个问题,即两个变量的setter在无限递归中被调用,因为它们在最初设置时会尝试互相更改.

这是一个示例代码

class Example {
    var a: Int = 0
        set(value) {
            b = a+10
        }

    var b:Int = 0
        set(value) {
            a = b-10
        }
}
Run Code Online (Sandbox Code Playgroud)

然后说我然后使用以下代码:

val example = Example()
example.a = 10
Run Code Online (Sandbox Code Playgroud)

它最终导致infinte递归并最终导致stackoverflow.用于b调用setter的setter,a而setter 又将setter调用b.它永远持续下去.

我希望能够以更新值ba设置,而且更新的值ab设置.

那里有Kotlin专家的想法吗?在这种情况下,我是否需要使Java像setter一样,这样每当我为aor 赋值时都不会调用我的setter代码b.或者,我可以使用一些漂亮的Kotlin善良吗?

android kotlin

5
推荐指数
1
解决办法
571
查看次数

标签 统计

android ×1

kotlin ×1