الثوابت في 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؟
أرجو إفادتي، من فضلكم.