التابع Module.module_eval في روبي
يُقيّم التابع module_eval السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، فلن تتأثر عملية البحث عن الثوابت/ الأصناف.
يمكن استخدام هذا التابع لإضافة توابع لصنف ما. يعيد التابع module_eval نتيجة تقييم وسائطه.
البنية العامة
module_eval(string [, filename [, lineno]]) → obj
module_eval {|mod| block }→ obj
المعاملات
string
السلسلة النصية المراد تقييمها.
filename
يحدد هذا الوسيط والوسيط lineno نص رسائل الخطأ.
lineno
يحدد هذا الوسيط والوسيط filename نص رسائل الخطأ.
القيمة المعادة
تعاد نتيجة تقييم المعاملات المعطاة.
أمثلة
مثال على استخدام التابع module_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
انظر أيضا
- التابع
module_exec: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.