我正在测试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.它永远持续下去.
我希望能够以更新值b时a设置,而且更新的值a时b设置.
那里有Kotlin专家的想法吗?在这种情况下,我是否需要使Java像setter一样,这样每当我为aor 赋值时都不会调用我的setter代码b.或者,我可以使用一些漂亮的Kotlin善良吗?