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

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>module_exec‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby ت...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Module]]
 
[[تصنيف: Ruby Module]]
يقيّم التابع <code>module_exec</code> الكتلة الممررة في سياق الصنف/الوحدة. التابع المعرف في الكتلة ستنتمي إلى المُُستقبِل (receiver). الوسائط المُمررة إلى التابع ستُمرّر كلها إلى الكتلة. يمكن استخدام هذا إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخة (instance variables).
+
يقيّم التابع <code>module_exec</code> الكتلة الممررة في سياق الصنف/الوحدة. التابع المعرف في الكتلة سينتمي إلى المُُستقبِل (receiver). الوسائط المُمررة إلى التابع ستُمرّر كلها إلى الكتلة.  
  
الناتج:
+
يمكن استخدام هذا التابع إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخة (instance variables).
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">module_exec(arg...) {|var...| block } → obj‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">module_exec(arg...) {|var...| block } → obj‎</syntaxhighlight>
==المعاملات==
 
===<code>arg...‎</code>===
 
 
 
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد نتيجة تقييم الكتلة الممررة في سياق الصنف/الوحدة.
  
 
==أمثلة==
 
==أمثلة==
سطر 21: سطر 18:
 
   def hello() "Hello there!" end
 
   def hello() "Hello there!" end
 
}
 
}
puts Thing.new.hello()‎</syntaxhighlight>
+
puts Thing.new.hello()‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">Hello there!
 +
</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Module/module_eval|module_eval]]</code>: يُقيّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة، إلا أنه عند إعطاء كتلة، لن يتأثر البحث عن الثوابت/ الأصناف. يمكن استخدام هذا لإضافة توابع لصنف ما. تعيد <code>module_eval</code> نتيجة تقييم وسائطها. يحدد الوسيطان الاختياريان filename و lineno نص رسائل الخطأ.
+
* التابع <code>[[Ruby/Module/module_eval|module_eval]]</code>: يُقيّم  السلسلة النصية أو الكتلة المعطاة في سياق الوحدة،  
* التابع <code>[[Ruby/Module/module_function|module_function]]</code>: ينشئ  دوال وحدة (module functions) للتابع المعطى. يمكن استدعاء هذه الدوال مع الوحدة كمُستقبِلات، كما يمكن أن تصير متاحة كتوابع نسخة (instance methods) للأصناف التي تُمزج (mix) في الوحدة. دوال <code>Module</code> هي نسخ من الدالة الأصلية، وبالتالي يمكن تغييرها بشكل مستقل. توابع النسخة (instance-method) ستُجعل خاصة. إذا تم استدعاء  دون وسائط، ستصبح التوابع المعرفة لاحقاً دوال وحدة. تُحوّل الوسائط النصية إلى رموز.
 
  
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_exec قسم  التابع module_exec‎ في الصنف Module‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_exec قسم  التابع module_exec‎ في الصنف Module‎ في توثيق روبي الرسمي.]

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

يقيّم التابع module_exec الكتلة الممررة في سياق الصنف/الوحدة. التابع المعرف في الكتلة سينتمي إلى المُُستقبِل (receiver). الوسائط المُمررة إلى التابع ستُمرّر كلها إلى الكتلة.

يمكن استخدام هذا التابع إذا كانت الكتلة تحتاج إلى الوصول إلى متغيرات النسخة (instance variables).

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

module_exec(arg...) {|var...| block }  obj

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

يعيد نتيجة تقييم الكتلة الممررة في سياق الصنف/الوحدة.

أمثلة

مثال على استخدام التابع module_exec‎:

class Thing
end
Thing.class_exec{
  def hello() "Hello there!" end
}
puts Thing.new.hello()

الناتج:

Hello there!

انظر أيضا

  • التابع module_eval: يُقيّم السلسلة النصية أو الكتلة المعطاة في سياق الوحدة،

مصادر