मैं एंड्रॉइड पर कोटलिन का परीक्षण कर रहा हूं और एक समस्या में भाग गया जहां दो चर के सेटर्स को infinte रिकर्सन में बुलाया जाता है क्योंकि वे मूल रूप से सेट होने पर एक दूसरे को बदलने की कोशिश करते हैं।कोटलिन सेटर infinte रिकर्सन
यहाँ एक नमूना कोड
class Example {
var a: Int = 0
set(value) {
b = a+10
}
var b:Int = 0
set(value) {
a = b-10
}
}
है और कहते हैं कि मैं उसके बाद निम्न कोड का उपयोग करें:
val example = Example()
example.a = 10
यह एक infinte recursions और अंततः एक stackoverflow के कारण समाप्त होता है। b
के लिए सेटटर a
के लिए सेटटर को कॉल करता है जो बदले में b
के लिए सेटटर को कॉल करता है। और यह हमेशा के लिए चला जाता है।
मैं b
के लिए मान को अद्यतन जब भी a
सेट किया गया है, लेकिन जब भी b
सेट किया गया है भी a
का मान अपडेट करने में सक्षम होना चाहता हूँ।
कोटलिन विशेषज्ञों के कोई विचार वहां से बाहर हैं? क्या मुझे इस मामले में जावा को सेटर्स की तरह बनाना होगा ताकि जब भी मैं a
या b
पर मान निर्दिष्ट करता हूं तो मेरा सेटर कोड कॉल नहीं किया जाता है। या क्या कुछ निफ्टी कोटलिन भलाई है जिसका मैं उपयोग कर सकता हूं?