الفرق بين المراجعتين لصفحة: «Ruby/Module/class eval»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>class_eval</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تص...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 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> نتيجة تقييم الوسيط الممرر إليه. | |||
< | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">class_eval(string [, filename [, lineno]]) → obj | <syntaxhighlight lang="ruby">class_eval(string [, filename [, lineno]]) → obj | ||
سطر 14: | سطر 11: | ||
==المعاملات== | ==المعاملات== | ||
===<code>string</code>=== | ===<code>string</code>=== | ||
السلسلة النصية المراد تقييمها. | |||
===<code>filename</code>=== | ===<code>filename</code>=== | ||
يحدد هذا المعامل والمعامل <code>lineno</code> نص رسائل الخطأ. | |||
===<code>lineno</code>=== | === <code>lineno</code> === | ||
يحدد هذا المعامل والمعامل <code>filename</code> نص رسائل الخطأ. | |||
==القيمة | ==القيمة المعادة== | ||
تعاد نتيجة تقييم السلسلة النصية <code>string</code> أو الكتلة <code>block</code> المعطاة في سياق الوحدة المحدَّدة. | |||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>class_eval</code>: | مثال على استخدام التابع <code>class_eval</code>:<syntaxhighlight lang="ruby">class Thing | ||
<syntaxhighlight lang="ruby">class Thing | |||
end | end | ||
a = %q{def hello() "Hello there!" end} | a = %q{def hello() "Hello there!" end} | ||
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 | |||
or method `code' for Thing:Class</syntaxhighlight> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Module/ | *التابع <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
: يقيم الكتلة المعطاة في سياق الصنف/الوحدة.