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

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>class_eval‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تص...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Module]]
 
[[تصنيف: Ruby Module]]
يُقبّم التابع <code>class_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة الذي استُدعي معه، إلا أنه عند إعطاء كتلة، لن يتأثر البحث عن متغيراالأصناف والثوابت. يمكن استخدام هذا لإضافة توابع إلى صنف. يعيد <code>module_eval</code> نتيجة تقييم الوسيط الممرر إليه. يحدد الوسيطان الاختياريات filename و lineno نص رسائل الخطأ.
+
يُقبّم التابع <code>class_eval</code> السلسلة النصية أو الكتلة المعطاة في سياق الوحدة التي استُدعي معها، إلا أنه عند إعطاء كتلة، البحث عن متغيرات االأصناف/الثوابت لن يتأثر. يمكن استخدامه لإضافة توابع إلى صنف ما.
  
الناتج:
+
يعيد <code>module_eval</code> نتيجة تقييم الوسيط الممرر إليه. يحدد الوسيطان الاختياريان <code>filename</code> و <code>lineno</code> نص رسائل الخطأ.
<syntaxhighlight lang="ruby">Hello there!
 
dummy:123:in `module_eval': undefined local variable
 
    or method `code' for Thing:Class‎</syntaxhighlight>
 
 
==البنية العامة==
 
==البنية العامة==
 
<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>filename</code> و <code>lineno</code> نص رسائل الخطأ
===<code>lineno‎</code>===
 
 
 
 
 
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد <code>module_eval</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="ruby">Hello there!
 +
dummy:123:in `module_eval': undefined local variable
 +
    or method `code' for Thing:Class‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Module/autoload-3F|autoload?]]</code>: يعيد  اسم الملف الذي سيُحمل إن كان الوسيط المعطى  مسجلًا كـ <code>autoload</code> في مجال أسماء الوحدة .
+
*التابع <code>[[Ruby/Module/class exec|class_exec]]</code>: يقيم  الكتلة المعطاة في سياق الصنف/الوحدة.
* التابع <code>[[Ruby/Module/class_exec|class_exec]]</code>: يقيم  الكتلة المعطاة في سياق الصنف/الوحدة. التابع المعرف في الكتلة ستنتمي إلى المستقبِل (receiver). ستُمرر كل الوسائط المعطاة إلى التابع إلى الكتلة. يمكن استخدام هذا إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخ (instance variables).
 
 
 
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-class_eval قسم  التابع class_eval‎ في الصنف Module‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-class_eval قسم  التابع class_eval‎ في الصنف Module‎ في توثيق روبي الرسمي.]

مراجعة 22:01، 26 أكتوبر 2018

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

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

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

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

المعاملات

string‎

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

filename‎ وlineno‎

يحدد الوسيطان الاختياريان filename و lineno نص رسائل الخطأ

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

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

أمثلة

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

مصادر