التابع method_missing في الصنف BasicObject في روبي

من موسوعة حسوب
مراجعة 18:20، 11 سبتمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع method_missing في الصنف BasicObject في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تص...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يُستدعى هذا التابع من قِبل روبي عندما تُرسَل رسالةٌ إلى كائن لا يستطيع التعامل معها. بشكل افتراضي، يُطلق المفسِّر (interpreter) خطأً عندما يُستدعى هذا التابع. على أي حال، يمكن إعادة تعريف (override) هذا التابع للحصول على سلوك أكثر ديناميكية. إذا تقرر أنه لا يجب التعامل مع تابع معيّن، فيجب حينئذٍ استدعاء super حتى يتسنَّى للأصناف الأجداد (ancestors) الوصول إلى التابع المنشود.

البنية العامة

 method_missing(symbol [, *args] )  result

المعاملات

symbol رمزٌ للتابع المُستدعى. args الوسائط التي ستُمرَّر إلى التابع المستدعى.

أمثلة

ينشئ المثال التالي صنفًا باسم Roman يستجيب للتوابع التي أسماؤها مكونة من الأعداد الرومانية، والتي يعيد كلٌّ منها العدد المقابل للعدد الروماني:

 class Roman
 def roman_to_int(str)
   # ...
 end
 def method_missing(methId)
   str = methId.id2name
   roman_to_int(str)
 end
end

r = Roman.new
r.iv      #=> 4
r.xxiii   #=> 23
r.mm      #=> 2000

انظر أيضًا

  • التابع instance_eval: يقدِّر‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (bolck) مُمرَّرة ضمن سياق كائن مُستقبِل (obj).
  • التابع ‎__send__‎‎‎: يستدعي التابع الممرَّر إليه مع تمرير وسائط محددة إليه.

مصادر

  • قسم التابع method_missing في الصنف BasicObject في توثيق روبي الرسمي.