Avatar ·

تهيئة الخصائص في Kotlin: by lazy أم lateinit — أيهما تختار؟

```html مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin وواجهت مشكلة. أكتب تطبيقاً صغيراً، وأحتاج إلى تهيئة بعض خصائص الفئة، لكن قيمها لا تصبح معروفة فوراً — على سبيل المثال، بعد تحميل البيانات أو في `onCreate` لنظام Android. أعرف طريقتين: `lateinit` و`by lazy`. لكن لا أستطيع فهم متى أستخدم أيهما. إليك مثال على الكود الخاص بي: ```kotlin class MyActivity : AppCompatActivity() { private lateinit var userName: String private val userAge: Int by lazy { fetchUserAge() // قد يتم استدعاء هذه الطريقة لاحقاً } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) userName = "John" // تهيئة lateinit } private fun fetchUserAge(): Int { return 25 } } ``` المشكلة هي أنه إذا استخدمت `lateinit` لـ `userName`، فإن IDE يشتكي إذا حاولت جعله `val`. أما `by lazy` فيعمل فقط مع `val`. أيضاً سمعت أن `latei ```