الفرق بين المراجعتين لصفحة: «Ruby/BasicObject/method missing»
< Ruby | BasicObject
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع method_missing في الصنف BasicObject في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تص...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع method_missing في الصنف BasicObject في روبي}}</noinclude> | <noinclude>{{DISPLAYTITLE: التابع <code>method_missing</code> في الصنف <code>BasicObject</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby | [[تصنيف: Ruby BasicObject]] | ||
يُستدعى | يُستدعى التابع <code>method_missing</code> من قِبل روبي عندما تُرسَل رسالةٌ إلى كائن لا يستطيع التعامل معها. بشكل افتراضي، يُطلق المفسِّر (interpreter) خطأً عندما يُستدعى هذا التابع. على أي حال، يمكن إعادة تعريف (override) هذا التابع للحصول على سلوك أكثر ديناميكية. إذا تقرر أنه لا يجب التعامل مع تابع معيّن، فيجب حينئذٍ استدعاء <code>super</code> حتى يتسنَّى للأصناف الأجداد (ancestors) الوصول إلى التابع المنشود. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby"> method_missing(symbol [, *args] ) → result | <syntaxhighlight lang="ruby">method_missing(symbol [, *args] ) → result | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==المعاملات== | ==المعاملات== | ||
<code>symbol</code> | |||
=== <code>symbol</code> === | |||
رمزٌ للتابع المُستدعى. | رمزٌ للتابع المُستدعى. | ||
<code>args</code> | |||
=== <code>args</code> === | |||
الوسائط التي ستُمرَّر إلى التابع المستدعى. | الوسائط التي ستُمرَّر إلى التابع المستدعى. | ||
==أمثلة== | ==أمثلة== | ||
ينشئ المثال التالي صنفًا باسم <code>Roman</code> يستجيب للتوابع التي أسماؤها مكونة من الأعداد الرومانية، والتي يعيد كلٌّ منها العدد المقابل للعدد الروماني: | ينشئ المثال التالي صنفًا باسم <code>Roman</code> يستجيب للتوابع التي أسماؤها مكونة من الأعداد الرومانية، والتي يعيد كلٌّ منها العدد المقابل للعدد الروماني: | ||
<syntaxhighlight lang="ruby"> class Roman | <syntaxhighlight lang="ruby">class Roman | ||
def roman_to_int(str) | def roman_to_int(str) | ||
# ... | # ... | ||
سطر 31: | سطر 33: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* التابع [[Ruby/BasicObject/instance_eval | <code>instance_eval</code>]]: يقدِّر ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية ( | * التابع<nowiki/>[[Ruby/BasicObject/instance_eval | <code>instance_eval</code>]]: يقدِّر ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (block) مُمرَّرة ضمن سياق كائن مُستقبِل (obj). | ||
* التابع <code>__send__</code>: يستدعي التابع الممرَّر إليه مع تمرير وسائط محددة إليه. | * التابع <code>[[Ruby/BasicObject/send|__send__]]</code>: يستدعي التابع الممرَّر إليه مع تمرير وسائط محددة إليه. | ||
==مصادر== | ==مصادر== | ||
* قسم التابع method_missing في الصنف BasicObject في توثيق روبي الرسمي. | * [http://ruby-doc.org/core-2.5.1/BasicObject.html#method-i-method_missing قسم التابع method_missing في الصنف BasicObject في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 07:30، 4 أكتوبر 2018
يُستدعى التابع method_missing
من قِبل روبي عندما تُرسَل رسالةٌ إلى كائن لا يستطيع التعامل معها. بشكل افتراضي، يُطلق المفسِّر (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
: يقدِّر ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (block) مُمرَّرة ضمن سياق كائن مُستقبِل (obj). - التابع
__send__
: يستدعي التابع الممرَّر إليه مع تمرير وسائط محددة إليه.