التحويل الذكي إلى "النوع" مستحيل: كيفية إصلاح الخطأ في Kotlin مع الخصائص القابلة للتغيير؟
السلام عليكم! أنا مبتدئ في Kotlin وواجهت خطأ غير مفهوم. لدي كلاس مع خاصية قابلة للتغيير `var`، وأحاول إجراء التحقق من النوع عبر `is`، لكن المترجم يعطي: "Smart cast to 'String' is impossible, because 'name' is a mutable property that could have been changed by this time".
هذا هو الكود الخاص بي:
```kotlin
class User {
var name: Any = "John"
fun printName() {
if (name is String) {
// هنا الخطأ: Smart cast to 'String' is impossible
println(name.length)
}
}
}
```
أفهم أن `name` هو `var`، لكنني تحققت من نوعه قبل الاستخدام! لماذا لا يثق بي المترجم؟ كيف يمكنني إصلاح هذا؟ في Java مع التحقق `instanceof` لم تكن هناك هذه المشكلة. ربما أفتقد شيئًا في أساسيات Kotlin؟ أرجو توضيح كيفية معالجة هذه الحالة بشكل صحيح بحيث يتم ترجمة الكود ويكون آمنًا. شكرًا مقدمًا!