في لغة دارت، تُستخدم كلمة Late لتعريف متغير أو حقل سيتم تهيئته في وقت لاحق. تُستخدم هذه الكلمة لتعريف متغير غير قابل للقيمة الفارغة (non-nullable) والذي لم يتم تهيئته في وقت الإعلان عنه.
مثال 1: كلمة Late في لغة دارت
في هذا المثال، يتم تعريف المتغير “name” كمتغير من نوع “String” بوصفه متغيرًا متأخرًا (late variable). يتم تهيئة المتغير “name” في داخل الدالة الرئيسية “main”.
// late variable late String name; void main() { // تعيين قيمة للمتغير المتأخر name = "John"; print(name); }
نتيجة الكود:
John
عند استخدام كلمة late قبل إعلان المتغير، فإنك تُخبر دارت بالنقاط التالية:
- لا تُعيّن قيمة لهذا المتغير حاليًا.
- ستقوم بتعيين القيمة في وقت لاحق.
- ستتأكد من أن المتغير لديه قيمة قبل استخدامه.
ملاحظة: كلمة “late” تعتبر عقدًا بينك وبين دارت. فأنت تخبر دارت أنك ستقوم بتعيين قيمة للمتغير قبل استخدامه. إذا لم تقم بتعيين قيمة للمتغير قبل استخدامه، فسيتم ظهور خطأ من قبل دارت.
مثال 2: كلمة Late في لغة دارت
في هذا المثال، يوجد كلاس يحمل اسم “Person” ولديه متغير “name”. يتم تعريف المتغير “name” بوصفه متغيرًا متأخرًا (late variable).
class Person { // متغير متأخر late String name; void greet() { print("مرحبًا $name"); } } void main() { Person person = Person(); // يتم تهيئة المتغير المتأخر هنا person.name = "John"; person.greet(); }
نتيجة الكود:
مرحبًا John
استخدام كلمة “late” في لغة دارت له حالتين:
- تعريف متغير أو حقل غير قابل للقيمة الفارغة (non-nullable) والذي لم يتم تهيئته في وقت الإعلان عنه.
- تأجيل تهيئة متغير أو حقل حتى يتم الوصول إليه لأول مرة. ويُستخدم هذا في حالة تجنب حساب قيمة غير ضرورية.
مثال 3: كلمة Late في لغة دارت
في هذا المثال، لم يتم استدعاء دالة “provideCountry” عند إعلان المتغير “value”. تُستدعى دالة “provideCountry” فقط عند استخدام المتغير “value”. يُستخدم تأخير التهيئة لتجنب الحسابات غير الضرورية.
// دالة String provideCountry() { print("تم استدعاء الدالة"); return "الولايات المتحدة"; } void main() { print("البدء"); // متغير متأخر late String value = provideCountry(); print("النهاية"); print(value); }
نتيجة الكود:
البدء النهاية تم استدعاء الدالة الولايات المتحدة
مثال 4: كلمة Late في لغة دارت
في هذا المثال، يتم استدعاء دالة “heavyComputation” عند استخدام المتغير “description”. إذا قمت بإزالة كلمة “late” من المتغير “description”، فسيتم استدعاء دالة “heavyComputation” عند إنشاء كائن من كلاس “Person”.
// كلاس Person class Person { final int age; final String name; late String description = heavyComputation(); // الـ constructor Person(this.age, this.name) { print("تم استدعاء الـ constructor"); } // الدالة String heavyComputation() { print("تم استدعاء الحساب الثقيل"); return "حساب ثقيل"; } } void main() { // كائن من كلاس Person Person person = Person(10, "John"); print(person.name); print(person.description); }
نتيجة الكود:
تم استدعاء الـ constructor John تم استدعاء الحساب الثقيل حساب ثقيل
مثال 5: كلمة Late في لغة دارت
في هذا المثال، يتم استدعاء الدالة “_getFullName” عند استخدام المتغير “fullName”. يتم تهيئة المتغيرات “firstName” و”lastName” عند استخدام المتغير “fullName”.
class Person { // تعريف متغيرات متأخرة late String fullName = _getFullName(); late String firstName = fullName.split(" ").first; late String lastName = fullName.split(" ").last; // الدالة String _getFullName() { print("تم استدعاء الدالة _getFullName"); return "John Doe"; } } void main() { print("البدء"); Person person = Person(); print("الاسم الأول: ${person.firstName}"); print("الاسم الأخير: ${person.lastName}"); print("الاسم الكامل: ${person.fullName}"); print("النهاية"); }
نتيجة الكود:
البدء تم استدعاء الدالة _getFullName الاسم الأول: John الاسم الأخير: Doe الاسم الكامل: John Doe النهاية
في هذا المثال، يتم استخدام كلمة Late لتأجيل تهيئة المتغيرات “fullName” و “firstName” و “lastName” حتى يتم الوصول إليها لأول مرة. عند استخدام المتغير “fullName”، يتم استدعاء الدالة “_getFullName” للحصول على الاسم الكامل. يتم تهيئة المتغيرات “firstName” و “lastName” من خلال تجزئة الاسم الكامل.
احرص على تعيين قيمة للمتغير المتأخر قبل استخدامه، وإلا فسيتم رمي استثناء “LateInitializationError”.
كلمة Late في لغة دارت تُستخدم لتعريف متغير غير قابل للقيمة الفارغة (non-nullable) والذي لم يتم تهيئته في وقت الإعلان عنه. تساعد هذه الكلمة في تأجيل تهيئة المتغير حتى يتم الوصول إليه لأول مرة، مما يساهم في تحسين أداء التطبيق وتجنب الحسابات غير الضرورية. ومن المهم أن تعيّن قيمة للمتغير المتأخر قبل استخدامه لتجنب ظهور أخطاء.
عند استخدام الكلمة المتأخرة، يرجى أخذ الحيطة والحذر والتأكد من تعيين قيمة للمتغير قبل استخدامه لضمان سلامة التشغيل.