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