ما فائدة الكلمة lazy في swift وكيف تعمل ؟

عبد الله • منذ 5 سنوات

اجد في بعض الشفرات الكلمة lazy

ما معناها ؟

وما استخداماتها ؟

كلمات دليلية: lazy swift سويفت

الإجابة الصحيحة

Ahmed • منذ 5 سنوات

في لغة Swfit كل المتغيرات من نوع stored properties اما ان تعطى قيم مبدئية قبل استخدامها ( استخدام الـ class المعرفه داخلها ) او تعريف ()init وتحضير المتغيرات داخله اثناء استخدام الـ class. هذا السلوك الطبيعي للـ class ، اما الـ struct المتغيرات تعطى قيم افتراضية في حالة عدم توفرها .. 

الآن ، لو كان عندك class وداخله متغير لكن ما تحب تعطيه قيمة مبدئية الا بعد الحاجة لإستخدامة ( لأي سبب ) ايش تسوي ؟ لو تركته من غير قيمة ما راح يشتغل التطبيق او البرنامج !! في الحالة هذي  تستخدم lazy علشان المترجم ( compiler ) يتجاهل هذا المتغير اللي مخالف للسلوك الطبيعي للـ class ولا يرجع خطأ .. 

أيش الفايدة من lazy ؟ 

تخيل لو عندك متغير يكلف استخدامه على سبيل المثال ٢ قيقا في الذاكرة كل مره يتم تشغيلة ( تشغيل الـ  class ) ، هذا راح يأثر على اداء التطبيق وسعة الذاكرة اذا تم استخدام الـ class لان كل عملية تشغيل يتبعها عملية تحضير قيم للمتغيرات المعرفة داخله .. فبإستخدام كلمة lazy مع هذا المتغير المكلف لا يتم تعريفه كل مرة يتم تشغيل الـ class وبهذي الطريقة يكون اداء تطبيقك مثالي والذاكرة ما تستهلك .. 

مثال : لو كان تطبيقك يعرض فيديوهات او صور ، هذي البيانات يتم استدعائها من الـ database او موقع خارجي. ماهو منطقي كل مره تستدعي الـ class ، المتغير يتواصل مع الـ database وينزل ١٠٠٠ صورة او فيديو! لان ممكن الـ class يتم استدعائه اكثر من مره اثناء تشغيل التطبيق. الحل ، استخدام كلمة lazy وبكذا راح تتجنب هذي المشكلة ويصير فقط تستخدم المتغير في وقت الحاجة.

اتمنى يكون الشرح مفهوم وواضح 

 

الإجابات (1)

Ahmed • منذ 5 سنوات
الإجابة الصحيحة
مميز

في لغة Swfit كل المتغيرات من نوع stored properties اما ان تعطى قيم مبدئية قبل استخدامها ( استخدام الـ class المعرفه داخلها ) او تعريف ()init وتحضير المتغيرات داخله اثناء استخدام الـ class. هذا السلوك الطبيعي للـ class ، اما الـ struct المتغيرات تعطى قيم افتراضية في حالة عدم توفرها .. 

الآن ، لو كان عندك class وداخله متغير لكن ما تحب تعطيه قيمة مبدئية الا بعد الحاجة لإستخدامة ( لأي سبب ) ايش تسوي ؟ لو تركته من غير قيمة ما راح يشتغل التطبيق او البرنامج !! في الحالة هذي  تستخدم lazy علشان المترجم ( compiler ) يتجاهل هذا المتغير اللي مخالف للسلوك الطبيعي للـ class ولا يرجع خطأ .. 

أيش الفايدة من lazy ؟ 

تخيل لو عندك متغير يكلف استخدامه على سبيل المثال ٢ قيقا في الذاكرة كل مره يتم تشغيلة ( تشغيل الـ  class ) ، هذا راح يأثر على اداء التطبيق وسعة الذاكرة اذا تم استخدام الـ class لان كل عملية تشغيل يتبعها عملية تحضير قيم للمتغيرات المعرفة داخله .. فبإستخدام كلمة lazy مع هذا المتغير المكلف لا يتم تعريفه كل مرة يتم تشغيل الـ class وبهذي الطريقة يكون اداء تطبيقك مثالي والذاكرة ما تستهلك .. 

مثال : لو كان تطبيقك يعرض فيديوهات او صور ، هذي البيانات يتم استدعائها من الـ database او موقع خارجي. ماهو منطقي كل مره تستدعي الـ class ، المتغير يتواصل مع الـ database وينزل ١٠٠٠ صورة او فيديو! لان ممكن الـ class يتم استدعائه اكثر من مره اثناء تشغيل التطبيق. الحل ، استخدام كلمة lazy وبكذا راح تتجنب هذي المشكلة ويصير فقط تستخدم المتغير في وقت الحاجة.

اتمنى يكون الشرح مفهوم وواضح 

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !