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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code> instance_exec</code>في الصنف <code>BasicObject</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>instance_exec</code>في الصنف <code>BasicObject</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby ARGF]]
+
[[تصنيف: Ruby BasicObject]]
ينفِّذ التابع <code>instance_exec</code> الكتلة البرمجية المُمرَّرة ضمن سياق الكائن المستقبل (<code>obj</code>). لتعيين السياق، يُضبَط المتغير <code>self</code> إلى <code>obj</code> أثناء تنفيذ الشيفرة، مما يعطي الشيفرة إمكانية الوصول لمتغيرات النسخة <code>obj</code>.
+
ينفِّذ التابع <code>instance_exec</code> الكتلة البرمجية المُمرَّرة ضمن سياق الكائن المستقبل (obj). لتعيين السياق، يُضبَط المتغير <code>self</code> إلى <code>obj</code> أثناء تنفيذ الشيفرة، مما يعطي الشيفرة إمكانية الوصول لمتغيرات النسخة <code>obj</code>.
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="ruby"> instance_exec(arg...) {|var...| block } → obj
+
<syntaxhighlight lang="ruby">instance_exec(arg...) {|var...| block } → obj
 
  </syntaxhighlight>
 
  </syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
سطر 15: سطر 15:
 
==أمثلة==
 
==أمثلة==
 
مثال على استخدام التابع <code>instance_exec</code>:
 
مثال على استخدام التابع <code>instance_exec</code>:
<syntaxhighlight lang="ruby"> class KlassWithSecret
+
<syntaxhighlight lang="ruby">class KlassWithSecret
 
  def initialize
 
  def initialize
 
   @secret = 99
 
   @secret = 99
سطر 24: سطر 24:
 
  </syntaxhighlight>
 
  </syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
* التابع [[Ruby/BasicObject/instance_eval | <code>instance_eval</code>]]: يقدِّر‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (<code>bolck</code>) مُمرَّرة ضمن سياق كائن مُستقبِل (<code>obj</code>).
+
* التابع<nowiki/>[[Ruby/BasicObject/instance_eval | <code>instance_eval</code>]]: يقدِّر‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (block) مُمرَّرة ضمن سياق كائن مُستقبِل (obj).
 
* التابع ‎[[Ruby/BasicObject/send|<code>__send__</code>‎‎‎]]: يستدعي تابعًا محددًا مع تمرير وسائط إليه.
 
* التابع ‎[[Ruby/BasicObject/send|<code>__send__</code>‎‎‎]]: يستدعي تابعًا محددًا مع تمرير وسائط إليه.
 
==مصادر==
 
==مصادر==
 
* [http://ruby-doc.org/core-2.5.1/BasicObject.html#method-i-instance_exec قسم التابع instance_exec في الصنف BasicObject في توثيق روبي الرسمي.]
 
* [http://ruby-doc.org/core-2.5.1/BasicObject.html#method-i-instance_exec قسم التابع instance_exec في الصنف BasicObject في توثيق روبي الرسمي.]

مراجعة 07:59، 4 أكتوبر 2018

ينفِّذ التابع instance_exec الكتلة البرمجية المُمرَّرة ضمن سياق الكائن المستقبل (obj). لتعيين السياق، يُضبَط المتغير self إلى obj أثناء تنفيذ الشيفرة، مما يعطي الشيفرة إمكانية الوصول لمتغيرات النسخة obj.

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

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

المعاملات

arg

الوسائط المراد تمريرها كمعاملات إلى الكتلة block.

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

يعاد كائن يحوي ناتج تنفيذ الكتلة البرمجية block.

أمثلة

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

class KlassWithSecret
 def initialize
   @secret = 99
 end
end
k = KlassWithSecret.new
k.instance_exec(5) {|x| @secret+x }   #=> 104

انظر أيضًا

  • التابع instance_eval: يقدِّر‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (block) مُمرَّرة ضمن سياق كائن مُستقبِل (obj).
  • التابع __send__‎‎‎: يستدعي تابعًا محددًا مع تمرير وسائط إليه.

مصادر