القائمة الرئيسية

الصفحات

ما هو lateinit و lazy في Kotlin وما الفرق بينهما؟

Kotlin،lateinit،lazy،What are lateinit and lazy in Kotlin? What are the differences between them،lateinit and lazy in Kotlin،ما هو lateinit و lazy في Kotlin وما الفرق بينهما؟،ما هو lateinit و lazy في Kotlin،



ما هو lateinit و lazy في Kotlin وما الفرق بينهما؟


إذا كنت مطور Kotlin فربما صادفت مصطلحي "lateinit" و"lazy" عند
 التعامل مع الخصائص في الكود الخاص بك. 
يتم استخدام هذين المفهومين لتأخير تهيئة المتغيرات في Kotlin لكن بينهما بعض
 الاختلافات الرئيسية التي من المهم فهمها. في هذه المقالة، سأستكشف ما هو
 lateinit و lazy، وكيف يعملان، والاختلافات بينهما.
لنبدأ بـ lateinit. Lateinit هي كلمة أساسية في Kotlin تسمح لك بإعلان 
خاصية غير فارغة دون تهيئتها على الفور. وهذا مفيد عندما يكون لديك خاصية
 تعرف أنها ستتم تهيئتها قبل الوصول إليها، ولكنك لا تريد تعيين قيمة لها على الفور.
 يجب أن تكون خصائص Lateinit من نوع غير فارغ، ولا يمكن
 استخدامها مع أنواع بدائية مثل Int أو Boolean.

لاستخدام lateinit، ما عليك سوى إعلان خاصية باستخدام الكلمة الأساسية lateinit ثم
 تعيين قيمة لها لاحقًا في الكود الخاص بك. على سبيل المثال:

lateinit var name: String
fun initializeName() {
name = "Test That"
}

في هذا المثال، نعلن عن خاصية lateinit تسمى name من النوع String. 
ثم نقوم بتعيين قيمة لها في دالة initializeName(). 
بهذه الطريقة، يمكننا التأكد من تهيئة name قبل الوصول إليه، ولكننا لا نضطر إلى تعيين قيمة له عند إعلانه.

الآن، دعنا نتحدث عن Lazy. Lazy هي كلمة رئيسية أخرى في Kotlin
 تسمح لك بتأخير تهيئة خاصية حتى يتم الوصول إليها لأول مرة. 
هذا مفيد عندما يكون لديك خاصية مكلفة للتهيئة أو تحتاجها فقط في ظل ظروف معينة. 
يمكن أن تكون خصائص Lazy من أي نوع، بما في ذلك الأنواع القابلة للعدم.

لاستخدام lazy، عليك إعلان خاصية باستخدام الكلمة الأساسية lazy وتوفير
 تعبير lambda الذي يقوم بتهيئة الخاصية. على سبيل المثال:

val fullName: String by lazy {
"Test That"
}

في هذا المثال، نعلن عن خاصية كسولة تسمى fullName من النوع String. 






يتم تهيئة قيمة fullName باستخدام تعبير lambda "Test That".
 سيتم حساب قيمة fullName في المرة الأولى التي يتم الوصول إليها،
 ثم يتم تخزينها مؤقتًا للوصول إليها في المستقبل.

الآن بعد أن تناولنا ما هو lateinit و lazy، دعنا نناقش الاختلافات بينهما. 
الفرق الرئيسي بين lateinit و lazy هو متى يتم تهيئة الخاصية.
 مع lateinit، يجب تهيئة الخاصية قبل الوصول إليها، وإلا فسيتم طرح NullPointerException. 
مع lazy، يتم تهيئة الخاصية في المرة الأولى التي يتم الوصول إليها، ثم يتم تخزينها مؤقتًا للوصول إليها في المستقبل.
هناك فرق آخر وهو أن خصائص lateinit يجب أن تكون من نوع غير فارغ، 
بينما خصائص lazy يمكن أن تكون من أي نوع، بما في ذلك الأنواع القابلة للعدم.
 وهذا يعني أنه يمكنك استخدام lazy مع خصائص قد تكون أو لا تكون لها قيمة،
 بينما تتطلب lateinit أن تكون للخاصية قيمة قبل الوصول إليها.

في الختام، تعد كل من lateinit و lazy أدوات مفيدة لتأخير تهيئة الخصائص في Kotlin،
 لكن هناك بعض الاختلافات الرئيسية التي تجعلهما مناسبين لمواقف مختلفة. 
تعد Lateinit رائعة للخصائص التي تعرف أنها ستتم تهيئة قبل الوصول إليها،
 بينما تعد lazy مثالية للخصائص التي تكون تهيئةها مكلفة أو التي تحتاجها فقط في ظل ظروف معينة. 
سيساعدك فهم متى تستخدم كل من هذه المفاهيم على كتابة كود Kotlin أكثر كفاءة وإيجازًا.


 
جدول المحتويات