Avatar ·

الثوابت في Kotlin: الطرق الصحيحة للإعلان والاستخدام

مرحبًا بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java، ويحيرني مسألة إعلان الثوابت. في Java، كنت معتادًا على كتابة `public static final String MY_CONST = "value";`، بينما في Kotlin أرى عدة طرق مختلفة ولا أفهم أيها الصحيح. على سبيل المثال، أرى أنه يمكن كتابة: ```kotlin class MyClass { companion object { val MY_CONST = "value" } } ``` أو حتى ببساطة: ```kotlin val MY_CONST = "value" ``` لكن في بعض الأدلة يكتبون عن `const val`، وفي أخرى يذكرون أن `const` يعمل فقط مع الأنواع البدائية. كما أنني مرتبك بشأن `object` و `companion object` — متى نستخدم أيهما؟ وهل يجب استخدام `companion object` كبديل لـ `static final` من Java، أم أنه نمط سيء؟ أرجو توضيح أي نهج يُعتبر صحيحًا ومتوافقًا مع أسلوب Kotlin؟ أرغب في الكتابة "بشكل صحيح" منذ البداية لتجنب إعادة العمل لاحقًا. يهمني بشكل خاص الفرق بين `val` و `const val`، وأين من الأفضل تخزين الثوابت — داخل class، في ملف منفصل، أم في object؟