Smart cast to 'Type' is impossible: Kotlin में परिवर्तनीय गुणों के साथ त्रुटि को कैसे ठीक करें
नमस्ते! मैंने Kotlin सीखना शुरू किया है और एक त्रुटि का सामना किया जिसे मैं समझ नहीं पा रहा हूँ। मेरे पास एक सरल कोड है जहाँ मैं एक variable के type की जाँच करने की कोशिश कर रहा हूँ और यदि वह string है तो कुछ कार्रवाई कर रहा हूँ:
```kotlin
var value: Any = "Hello, Kotlin!"
if (value is String) {
println(value.length) // त्रुटि: Smart cast to 'String' is impossible
}
```
कंपाइलर कहता है: "Smart cast to 'String' is impossible, because 'value' is a mutable property that could have been changed by this time"। मैं समझता हूँ कि `value` एक mutable variable है, लेकिन यह समस्या क्यों है? आखिरकार, मैंने अभी `if` के अंदर इसके type की जाँच की है! यदि मैं `val` का उपयोग करता, तो सब काम करता। लेकिन मुझे चाहिए कि variable बदल सके। ऐसी स्थितियों को सही तरीके से कैसे संभालें? क्या कोई pattern या वैकल्पिक तरीका है? उदाहरणों के साथ स्पष्टीकरण के लिए आभारी रहूँगा।
<<>>
Smart cast त्रुटि क्यों होती है?
समस्या यह है कि Kotlin कंपाइलर यह गारंटी नहीं दे सकता कि type की जाँच और उपयोग के बीच में variable बदल नहीं गया है।