تهيئة الخصائص في 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
```