الفرق بين المراجعتين لصفحة: «Ruby/Module/module eval»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>module_eval | <noinclude>{{DISPLAYTITLE: التابع <code>Module.module_eval</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module Class]] | ||
يُقيّم التابع <code>module_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، البحث عن الثوابت/ الأصناف | يُقيّم التابع <code>module_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، فلن تتأثر عملية البحث عن الثوابت/ الأصناف. | ||
يمكن استخدام هذا التابع لإضافة توابع لصنف ما. | يمكن استخدام هذا التابع لإضافة توابع لصنف ما. يعيد التابع <code>module_eval</code> نتيجة تقييم وسائطه. | ||
يعيد التابع <code>module_eval</code> نتيجة تقييم وسائطه | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj | <syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj | ||
سطر 15: | سطر 13: | ||
السلسلة النصية المراد تقييمها. | السلسلة النصية المراد تقييمها. | ||
===<code>filename | ===<code>filename</code>=== | ||
يحدد هذا الوسيط والوسيط <code>lineno</code> نص رسائل الخطأ. | |||
===<code>lineno</code>=== | |||
يحدد هذا الوسيط والوسيط <code>filename</code> نص رسائل الخطأ. | |||
==القيمة | ==القيمة المعادة== | ||
تعاد نتيجة تقييم المعاملات المعطاة. | |||
==أمثلة== | ==أمثلة== | ||
سطر 28: | سطر 29: | ||
Thing.module_eval(a) | Thing.module_eval(a) | ||
puts Thing.new.hello() | puts Thing.new.hello() | ||
Thing.module_eval("invalid code", "dummy", 123)</syntaxhighlight> | Thing.module_eval("invalid code", "dummy", 123)</syntaxhighlight>ناتج تنفيذ هذا المثال هو:<syntaxhighlight lang="text">Hello there! | ||
dummy:123:in `module_eval': undefined local variable | dummy:123:in `module_eval': undefined local variable | ||
or method `code' for Thing:Class</syntaxhighlight> | or method `code' for Thing:Class</syntaxhighlight> | ||
سطر 35: | سطر 36: | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_eval قسم | *[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_eval قسم التابع module_eval في الصنف Module في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 15:25، 19 نوفمبر 2018
يُقيّم التابع 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
: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.