الفرق بين المراجعتين لصفحة: «Ruby/Module/class eval»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>class_eval | <noinclude>{{DISPLAYTITLE: التابع <code>Module.class_eval</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module Class]] | ||
يُقيِّم التابع <code>class_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة التي استُدعي معها، إلا أنه عند إعطاء كتلة، فلن تتأثر عملية البحث عن متغيرات الأصناف/الثوابت. يمكن استخدامه لإضافة توابع إلى صنف ما. | |||
يعيد <code>module_eval</code> نتيجة تقييم الوسيط الممرر إليه | يعيد التابع <code>module_eval</code> نتيجة تقييم الوسيط الممرر إليه. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">class_eval(string [, filename [, lineno]]) → obj | <syntaxhighlight lang="ruby">class_eval(string [, filename [, lineno]]) → obj | ||
سطر 13: | سطر 13: | ||
السلسلة النصية المراد تقييمها. | السلسلة النصية المراد تقييمها. | ||
===<code>filename | ===<code>filename</code>=== | ||
يحدد هذا المعامل والمعامل <code>lineno</code> نص رسائل الخطأ. | |||
==القيمة | |||
=== <code>lineno</code> === | |||
يحدد هذا المعامل والمعامل <code>filename</code> نص رسائل الخطأ. | |||
==القيمة المعادة== | |||
تعاد نتيجة تقييم السلسلة النصية <code>string</code> أو الكتلة <code>block</code> المعطاة في سياق الوحدة المحدَّدة. | |||
==أمثلة== | ==أمثلة== | ||
سطر 24: | سطر 28: | ||
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> | ||
سطر 30: | سطر 34: | ||
*التابع <code>[[Ruby/Module/class exec|class_exec]]</code>: يقيم الكتلة المعطاة في سياق الصنف/الوحدة. | *التابع <code>[[Ruby/Module/class exec|class_exec]]</code>: يقيم الكتلة المعطاة في سياق الصنف/الوحدة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-class_eval قسم | *[http://ruby-doc.org/core-2.5.1/Module.html#method-i-class_eval قسم التابع class_eval في الصنف 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
: يقيم الكتلة المعطاة في سياق الصنف/الوحدة.