-
Title:
Groovy Closures and Objects
-
Description:
-
الآن وقد أصبحت
،الأساسيات في نطاق السير الخاص بنا
-
دعونا نفحص بعض
.الميزات المتقدمة للغة Groovy
-
.الأولى تسمى وظيفة الإغلاق
-
الإغلاق هو في الأساس أحد الطرق
.المختلفة للإعلان عن دالة
-
لكن يجب لهذه الدالة أن تكون قابلة للتجميع
.والتمرير والتعيين للمتغيرات
-
نقوم بإعلان الدالة باستخدام
.أقواس معقوصة مثل هذه
-
يسمى الإغلاق بهذا الاسم
لحصر المتغيرات من داخل
-
.بيئتها المحيطة بها
-
لذلك ستظل قيمة foo
.مليون دولار دائمًا
-
،دعونا نمضي وننفذ التسمية
حيث أن myClosure عبارة عن دالة
-
فيمكننا تسميتها فقط بوضع أقواس
.بعدها، والآن لنجرب هذا
-
.رائع، جارٍ التنفيذ
-
تردنا عبارات print
من داخل عملية الإغلاق
-
مع الحفاظ على قيمة foo
.داخل الإغلاق
-
،لكن على عكس الدوال العادية
.يمكن تمرير عمليات الإغلاق إلى متغيرات مختلفة
-
لذلك، إذا قمنا بإعلان الشريط وجعله مساويًا إلى
myClosure ثم نعلن
-
عن متغير baz آخر
-
ونجعله مساويًا للشريط، يمكننا استدعاء baz
.لأن baz الآن أصبح دالة
-
.وها نحن نتقدم
-
باستدعاء baz، نحصل على نفس
.النتيجة التي نحصل عليها عند استدعاء myClosure
-
حسنًا، دعونا نقوم ببعض الخطوات
.الصعبة، تمسكوا بقبعاتكم
-
وهكذا، فإن عمليات الإغلاق لها صيغ مختلفة
.مع الوسيطات
-
نضع قائمة مقسمة بفواصل
للوسيطات الخاصة بنا إلى يسار السهم
-
ثم ننفذ ما نريد
.بالوسيطات
-
أرجو أن يكون من الواضح لكم
أن هذه الدالة في الواقع
-
.تضاعف مدخلاتها
-
الجزء الصعب هو أن نظام Gradle
.يسمح بالدوال ذات المراتب العليا
-
المقصود بهذا الدوال التي تأخذ
.دالة أخرى ضمن مدخلاتها
-
.لدينا هنا على سبيل المثال applyTwice
-
الوسيطة الأولى عبارة عن دالة
والوسيطة الثانية هي مجرد
-
وسيطة ستمرر من خلال
.هذه الدالة
-
ما ترجعه هو دالة
.طبقت مرتين لتلك الوسيطة
-
.فلنتحقق من هذا من خلال مثال
-
إذا حددنا قيمة foo بالعدد 5
.ثم طبقنا مهمة doubleIt على foo مرتين
-
.دعونا نرى ما الذي سوف نحصل عليه
-
قبل التشغيل، دعونا نحاول تخمين
.النتيجة مسبقًا
-
حسنًا، دعونا نرى، ضعف 5 يساوي 10
.وضعف 10 يساوي 20
-
.رائع
-
.دعونا نتحدث عن القوائم في Groovy
-
تسمح لغة Groovy باستخدام صيغ حرفية
بقوائم فائقة البساطة
-
.لمعالجة قوائم معقدة للغاية
-
على سبيل المثال، يمكننا تنفيذ عملية إغلاق
.لكل عنصر في القائمة
-
.فقط علينا تعريف عملية الإغلاق الخاصة بنا
-
،في هذه الحالة
.يتم طباعة كل عنصر
-
ثم نقوم بتسمية myList.each
.ثم عملية الإغلاق
-
.لنرى ما الذي سوف يحدث
-
.ها نحن نرى النتيجة الآن
-
.جارٍ طباعة كل عنصر ضمن قائمتنا
-
هناك بعض الأشياء التي يمكننا القيام بها
لجعل الصيغ التي نستخدمها
-
.أكثر إحكامًا
-
أول شيء هو إمكانية
.تعريف عملية الإغلاق الخاصة بنا في سطر
-
يرجى الملاحظة أنه لا يوجد
أي أقواس هنا
-
.لأن صيغة لغة Groovy ممتازة
-
كذلك، إذا كانت عملية الإغلاق
لا تقبل إلا وسيطة واحدة
-
فيتم بشكل افتراضي
.تسمية الوسيطة بها
-
.لنجرب تطبيق هذا
-
ها نحن قد بدأنا
.وما توقعناه يحدث
-
.دعونا نتحدث عن الفئات في Groovy
-
تتميز لغة Groovy بصيغها المبسطة
لإنشاء الفئات، ولكن
-
الفئات نفسها
.هي في الأساس لغة Java متخفية
-
.حسنًا، لدينا هنا فئة
-
تحتوي الفئة على متغير عضو
.ولها أسلوب خاص
-
يمكننا إنشاء واحدة جديدة
كما اعتدنا باستخدام Java
-
ثم نصدر لها أمرًا
.بطباعة التهنئة
-
يمكننا أيضاً تغيير التهنئة
.ثم إصدار أمر بإعادة طباعتها
-
تنشئ لغة Groovy تلقائيًا
getters وsetters
-
.لكل متغيرات العضو الخاصة بنا
-
.دعونا نجرب هذا الإجراء
-
.المخرجات التي حصلنا عليها هي بالضبط كما توقعنا
-
أولاً، نطبع التهنئة الافتراضية
،ثم بعد تخصيص الخيارات
-
.يتم طباعة التهنئة المخصصة
-
.يمكن أن يكون لعمليات الإغلاق كائن مندوب
-
دعونا نتفحص عملية
.الإغلاق الذي قمنا بإنشائها هنا
-
تحاول عملية الإغلاق تعيين
.متغير يسمى تهنئة
-
لكن لا يتضمن greetingClosure
.متغيرًا يسمى greeting
-
في الواقع، المكان الوحيد الذي تم تعريف greeting
فيه هو داخل هذه الفئة
-
.كعضو متغير بها
-
ما يمكننا القيام به هو تعيين مندوب لعملية
greetingClosure
-
.كمثيل GroovyGreeter
-
والآن، يمكن لحالة greeting closure
الوصول إلى متغيرات العضو و
-
أساليب مثيل
.GroovyGreeter الحالي
-
،إذا سارت العملية جيدًا
،فعند استدعاء greetingClosure
-
بعد تعيين مندوب لها
،في myGroovyGreeter
-
فيجب أن تتمكن من تعيين التهنئة
.وطباعتها بشكل صحيح
-
.دعونا نجرب
-
.ها نحن بدأنا
-
لقد غيرنا greeting بنجاح
داخل مثيل
-
.GroovyGreeter من داخل وظيفة الإغلاق
-
تهنئتي بإتمام
.جولتنا السريعة في Groovy
-
.أعلم أن هناك الكثير من المواضيع التي يجب تغطيتها
-
لحسن الحظ هناك الكثير من
.الموارد لمساعدتنا
-
لقد قمنا بربط الكثير من الموارد ضمن
ملاحظات المدرب، وأنصحكم بشدة
-
بمطالعة هذا العرض التوضيحي مرة أخرى
.في عينة التعليمات البرمجية الموفرة مع الفئة