الفرق بين المراجعتين ل"Ruby/Module/module eval"

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>module_eval‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
+
<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> نتيجة تقييم وسائطه. ويحدد الوسيطان الاختياريان <code>filename</code> و <code>lineno</code> نص رسائل الخطأ.
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj
 
<syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj
سطر 15: سطر 13:
 
السلسلة النصية المراد تقييمها.
 
السلسلة النصية المراد تقييمها.
  
===<code>filename‎ و</code><code>lineno‎</code>===
+
===<code>filename‎</code>===
 +
يحدد هذا الوسيط والوسيط <code>lineno</code> نص رسائل الخطأ.
 +
 
 +
===<code>lineno‎</code>===
  
يحددان نص رسائل الخطأ.
+
يحدد هذا الوسيط والوسيط <code>filename</code> نص رسائل الخطأ.
==القيمة المُعادة==
+
==القيمة المعادة==
يعيد التابع <code>module_eval</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>الناتج:<syntaxhighlight lang="ruby">Hello there!
+
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 قسم التابع module_eval‎ في الصنف Module‎ في توثيق روبي الرسمي.]
+
*[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: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.

مصادر