الجديد

التعرج على طريقة في روبي

التعرج على طريقة في روبي

الاسم المستعار للأسلوب أو اسم المتغير في روبي هو إنشاء اسم ثان للأسلوب أو المتغير. يمكن استخدام الاسم المستعار إما لتوفير المزيد من الخيارات التعبيرية للمبرمج باستخدام الفصل الدراسي أو للمساعدة في تجاوز الأساليب وتغيير سلوك الفئة أو الكائن. يوفر روبي هذه الوظيفة الكلمات الأساسية "الاسم المستعار" و "alias_method".

إنشاء اسم ثاني

تأخذ الكلمة الأساسية الاسم المستعار الوسيطتين: اسم الأسلوب القديم واسم الطريقة الجديدة. يجب أن يتم تمرير أسماء الطرق كتسميات ، بدلاً من السلاسل. تُستخدم التسميات للإشارة إلى الأساليب والمتغيرات دون الرجوع إليها مباشرةً. إذا كنت مبرمجًا جديدًا من روبي ، فقد يبدو مفهوم الملصقات غريبًا ، ولكن كلما رأيت تسمية مثل ": methodname" ، فقط اقرأها كـ "الشيء المسمى methodname". المثال التالي يعلن فئة جديدة ويقوم بإنشاء اسم مستعار للطريقة on تسمى start.

#! / usr / bin / env ruby
فئة الميكروويف
مواطنه على
يضع "الميكروويف قيد التشغيل"
النهاية
الاسم المستعار: البدء: على
النهاية
م = ميكروويف
بداية # # مثل m.on

تغيير سلوك الطبقة

قد تكون هناك أوقات تريد فيها تغيير سلوك الفصل بعد إعلانه. يمكنك الاسم المستعار وإضافة أساليب جديدة إلى فئة موجودة عن طريق إنشاء إعلان من الدرجة الثانية له نفس اسم إعلان الفئة الموجود. يمكنك أيضًا إضافة الأسماء المستعارة والأساليب إلى كائنات فردية باستخدام بناء جملة يشبه بناء جملة الفئة الموروثة. يمكن تغيير سلوك أي فئة عن طريق إنشاء اسم مستعار لأي طريقة ثم إنشاء طريقة جديدة (باسم الطريقة الأصلية) تستدعي الطريقة باستخدام الاسم المستعار.

في المثال التالي ، يتم الإعلان عن فئة ميكروويف ويتم إنشاء مثيل. يستخدم تعريف الفئة الثانية طريقة الاسم المستعار لتغيير سلوك الأسلوب "on" لإضافة رسالة تحذير. يستخدم إعلان الفئة الثالثة لتغيير سلوك مثيل الميكروويف المحدد لإضافة تحذير أكثر صرامة. عند وضع اسم مستعار على طريقة عدة مرات ، تأكد من استخدام أسماء طرق مختلفة لتخزين الطريقة القديمة.

#! / usr / bin / env rubyclass Microwave
مواطنه يضع "الميكروويف على" النهاية
endm = Microwave.newm.onclass الاسم المستعار للميكروويف: old_on1: on
وضع def على "تحذير: لا تقم بإدخال أشياء معدنية!" نهاية old_on1
النهاية
m.on
# رسالة لهذا الميكروويف محددة
فئة <def on
يضع "هذا الميكروويف ضعيفًا ، أضف وقتًا إضافيًا"
old_on2
النهاية
النهاية
m.on # يعرض رسالة إضافية
m2 = ميكروويف
m2.on # لا يعرض رسالة إضافية