التابع Module.class_eval‎ في روبي

من موسوعة حسوب
< Ruby‏ | Module
مراجعة 08:31، 18 نوفمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يُقيِّم التابع class_eval السلسلة النصية أو الكتلة المعطاة في سياق الوحدة التي استُدعي معها، إلا أنه عند إعطاء كتلة، فلن تتأثر عملية البحث عن متغيرات الأصناف/الثوابت. يمكن استخدامه لإضافة توابع إلى صنف ما.

يعيد التابع module_eval نتيجة تقييم الوسيط الممرر إليه.

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

class_eval(string [, filename [, lineno]])   obj
class_eval {|mod| block }  obj

المعاملات

string‎

السلسلة النصية المراد تقييمها.

filename‎

يحدد هذا المعامل والمعامل lineno نص رسائل الخطأ.

lineno‎

يحدد هذا المعامل والمعامل filename نص رسائل الخطأ.

القيمة المعادة

تعاد نتيجة تقييم السلسلة النصية string أو الكتلة block المعطاة في سياق الوحدة المحدَّدة.

أمثلة

مثال على استخدام التابع class_eval‎:

class Thing
end
a = %q{def hello() "Hello there!" end}
Thing.module_eval(a)
puts Thing.new.hello()
Thing.module_eval("invalid code", "dummy", 123)

ناتج تنفيذ هذا المثال هو:

Hello there!
dummy:123:in `module_eval': undefined local variable
    or method `code' for Thing:Class‎

انظر أيضا

  • التابع class_exec: يقيم الكتلة المعطاة في سياق الصنف/الوحدة.

مصادر