Avatar ·

التحويل الذكي إلى "النوع" مستحيل: كيفية إصلاح الخطأ في 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؟ أرجو توضيح كيفية معالجة هذه الحالة بشكل صحيح بحيث يتم ترجمة الكود ويكون آمنًا. شكرًا مقدمًا!