التابع Module.class_eval
في روبي
يُقيِّم التابع 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
: يقيم الكتلة المعطاة في سياق الصنف/الوحدة.