الفرق بين المراجعتين لصفحة: «Ruby/BasicObject/instance exec»
< Ruby | BasicObject
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 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 | [[تصنيف: Ruby BasicObject]] | ||
ينفِّذ التابع <code>instance_exec</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>]]: يقدِّر ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية ( | * التابع<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 في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 08:02، 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__
: يستدعي تابعًا محددًا مع تمرير وسائط إليه.