الفرق بين المراجعتين لصفحة: «Ruby/Module/module eval»

من موسوعة حسوب
< Ruby‏ | Module
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>module_eval‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby ت...'
 
لا ملخص تعديل
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module]]
يُقيّم التابع <code>module_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، لن يتأثر البحث عن الثوابت/ الأصناف. يمكن استخدام هذا لإضافة توابع لصنف ما. تعيد <code>module_eval</code> نتيجة تقييم وسائطها. يحدد الوسيطان الاختياريان filename و lineno نص رسائل الخطأ.
يُقيّم التابع <code>module_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، البحث عن الثوابت/ الأصناف لن يتأثر .  


الناتج:
يمكن استخدام هذا التابع لإضافة توابع لصنف ما.
<syntaxhighlight lang="ruby">Hello there!
 
dummy:123:in `module_eval': undefined local variable
يعيد التابع <code>module_eval</code> نتيجة تقييم وسائطه. ويحدد الوسيطان الاختياريان <code>filename</code> و <code>lineno</code> نص رسائل الخطأ.
    or method `code' for Thing:Class‎</syntaxhighlight>
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj
<syntaxhighlight lang="ruby">module_eval(string [, filename [, lineno]]) → obj
سطر 14: سطر 13:
==المعاملات==
==المعاملات==
===<code>string‎</code>===
===<code>string‎</code>===
السلسلة النصية المراد تقييمها.


===<code>filename‎</code>===
===<code>filename‎ و</code><code>lineno‎</code>===
 
===<code>lineno‎</code>===
 


يحددان نص رسائل الخطأ.
==القيمة المُعادة==
==القيمة المُعادة==
يعيد التابع <code>module_eval</code> نتيجة تقييم وسائطه.


==أمثلة==
==أمثلة==
سطر 29: سطر 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="ruby">Hello there!
dummy:123:in `module_eval': undefined local variable
    or method `code' for Thing:Class‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Module/method_undefined|method_undefined]]</code>: غير موثق
* التابع <code>[[Ruby/Module/module_exec|module_exec]]</code>: يقيّم  الكتلة الممررة في سياق الصنف/الوحدة.
* التابع <code>[[Ruby/Module/module_exec|module_exec]]</code>: يقيّم  الكتلة الممررة في سياق الصنف/الوحدة. التابع المعرف في الكتلة ستنتمي إلى المُُستقبِل (receiver). الوسائط المُمررة إلى التابع ستُمرّر كلها إلى الكتلة. يمكن استخدام هذا إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخة (instance variables).


==مصادر==
==مصادر==
*[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‎ في توثيق روبي الرسمي.]

مراجعة 01:45، 27 أكتوبر 2018

يُقيّم التابع module_eval السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، البحث عن الثوابت/ الأصناف لن يتأثر .

يمكن استخدام هذا التابع لإضافة توابع لصنف ما.

يعيد التابع module_eval نتيجة تقييم وسائطه. ويحدد الوسيطان الاختياريان filename و lineno نص رسائل الخطأ.

البنية العامة

module_eval(string [, filename [, lineno]])  obj
module_eval {|mod| block } obj

المعاملات

string‎

السلسلة النصية المراد تقييمها.

filename‎ وlineno‎

يحددان نص رسائل الخطأ.

القيمة المُعادة

يعيد التابع module_eval نتيجة تقييم وسائطه.

أمثلة

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

مصادر