Avatar ·

الثوابت في Kotlin: كيف تنشئها وتستخدمها بشكل صحيح؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java، ويحيرني موضوع الثوابت. في Java اعتدت كتابة `public static final` للثوابت العامة و `final` للثوابت المحلية. لكن في Kotlin الأمر مختلف. على سبيل المثال، أريد تعريف الحد الأقصى لعدد محاولات تسجيل الدخول في التطبيق – 5. وثابت باسم التطبيق "MyApp". هكذا حاولت فعل ذلك: ```kotlin // الخيار 1: داخل class class LoginManager { val MAX_ATTEMPTS = 5 val APP_NAME = "MyApp" } // الخيار 2: على مستوى الملف val MAX_ATTEMPTS = 5 val APP_NAME = "MyApp" ``` لكنني قرأت أن استخدام `val` داخل class للثوابت هو ممارسة سيئة، لأنها ليست ثوابت حقيقية في وقت الترجمة (compile-time). وعلى مستوى الملف، ستظل مرتبطة بـ companion object إذا تم تحميل class. كما رأيت في التوثيق كلمة `const`. متى يجب استخدامها؟ وماذا أفعل إذا كان الثابت ليس primitive أو String، بل مثلاً list أو object؟ أرجو إفادتي، من فضلكم.