Testuję kotlin na Androida i wpadłem w problem, w którym ustawia się zmienne dwóch zmiennych w rekursji infinte, ponieważ próbują się nawzajem zmieniać, gdy są pierwotnie ustawione.Seter kotek Infinte rekursji
Oto przykładowy kod
class Example {
var a: Int = 0
set(value) {
b = a+10
}
var b:Int = 0
set(value) {
a = b-10
}
}
I powiedzieć, że następnie użyć następującego kodu:
val example = Example()
example.a = 10
kończy się powodując rekursji infinte i ostatecznie stackoverflow. Program ustawiający dla b
wywołuje funkcję ustawiającą dla a
, która z kolei ponownie wywołuje funkcję ustawiającą dla b
. I trwa to na zawsze.
Chcę móc zaktualizować wartość dla b
ilekroć a
jest ustawiona, ale także zaktualizować wartość a
ilekroć b
jest ustawiony.
Jakieś myśli ekspertów od Kotlin? Czy w takim przypadku muszę ustawić język Java tak, aby mój kod ustawiający nie był wywoływany za każdym razem, gdy przypisuję wartość do a
lub b
. A może jest jakaś dobra dobroć Kotlina, której mogę użyć?