मेरे पास निम्न विधि है। इसका तर्क बहुत आसान है, यदि सही सेट किया गया है तो उसके पास एक मूल्य (शून्य नहीं) होने पर बाएं कॉल करें। जब मैं इसे निम्न तरीके से लिखता हूं, तो यह काम करता है।कोटलिन कंपाइलर यह नहीं समझ सकता कि चर चरम पर लचीला नहीं है जबकि लूप
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
prev = next
next = next.left
while (next != null) {
prev = next
next = next.left
}
}
return prev
}
, तो इसके बजाय, मैं कोड एक do-जबकि पाश का उपयोग कर कम करने के लिए प्रयास करते हैं, यह अब स्मार्ट next
Node
को डाले। यह इस त्रुटि दिखाता है:
Type mismatch.
Required: Node<T>
Found: Node<T>?
कोड इस प्रकार है:
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
do {
prev = next // Error is here, even though next can't be null
next = next.left
} while (next != null)
}
return prev
}
आप केवल 'जबकि (अगला! = शून्य) {...} 'को सरल क्यों नहीं करते? –
आप सही हैं! मैंने इसे नहीं देखा। – biowep