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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code> instance_eval</code>في الصنف <code>BasicObject</code> في روبي}}</noinclude> تصنيف: Ruby تصن...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby ARGF]]
 
[[تصنيف: Ruby ARGF]]
يقدِّر (<code>Evaluates</code>) التابع <code>instance_eval</code>‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (<code>bolck</code>) مُمرَّرة ضمن سياق كائن مُستقبِل (<code>obj</code>). لتعيين السياق، يُضبَط المتغير <code>self</code> إلى <code>obj</code> أثناء تنفيذ الشيفرة، مما يعطي الشيفرة إمكانية الوصول لمتغيرات النسخة <code>obj</code> والتوابع الخاصة.
+
يقدِّر (Evaluates) التابع <code>instance_eval</code>‎ ناتج تنفيذ شيفرة مصدرية للغة روبي معطاة كسلسلة نصية أو ناتج كتلة برمجية (block) مُمرَّرة ضمن سياق كائن مُستقبِل (<code>obj</code>). لتعيين السياق، يُضبَط المتغير <code>self</code> إلى <code>obj</code> أثناء تنفيذ الشيفرة، مما يعطي الشيفرة إمكانية الوصول لمتغيرات النسخة <code>obj</code> والتوابع الخاصة.
 +
 
 
عندما يُمرَّر إلى التابع <code>instance_eval</code> كتلة برمجية، يُمرَّر <code>obj</code> أيضاً كوسيط وحيد للكتلة.
 
عندما يُمرَّر إلى التابع <code>instance_eval</code> كتلة برمجية، يُمرَّر <code>obj</code> أيضاً كوسيط وحيد للكتلة.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby"> instance_eval(string [, filename [, lineno]] ) → obj
 
<syntaxhighlight lang="ruby"> instance_eval(string [, filename [, lineno]] ) → obj
 
instance_eval {|obj| block } → obj
 
instance_eval {|obj| block } → obj
عندما يُمرَّر إلى التابع instance_eval سلسلة نصية، يوفر المعاملان filename و lineno الاختياريان اسم الملف ورقم سطر البداية اللذان سيُستخدمان عند الإبلاغ عن وجود أخطاء في التصريف (compilation errors).
+
</syntaxhighlight>عندما يُمرَّر إلى التابع <code>instance_eval</code> سلسلة نصية، يوفر المعاملان <code>filename</code> و <code>lineno</code> الاختياريان اسم الملف ورقم سطر البداية اللذان سيُستخدمان عند الإبلاغ عن وجود أخطاء في التصريف (compilation errors).
</syntaxhighlight>
+
 
 
==المعاملات==
 
==المعاملات==
<code>string</code>
+
 
 +
=== <code>string</code> ===
 
سلسلة نصية تحوي الشيفرة المراد تقدير ناتج تنفيذها.
 
سلسلة نصية تحوي الشيفرة المراد تقدير ناتج تنفيذها.
<code>filename</code>
+
 
سلسلة نصية تمثل اسم الملف الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (<code>compilation</code> <code>errors</code>).
+
=== <code>filename</code> ===
<code>lineno</code>
+
سلسلة نصية تمثل اسم الملف الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (compilation errors).
سلسلة نصية تمثل رقم سطر البداية الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (<code>compilation</code> <code>errors</code>).
+
 
 +
=== <code>lineno</code> ===
 +
سلسلة نصية تمثل رقم سطر البداية الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (compilation errors).
 
==القيم المعادة==
 
==القيم المعادة==
يعاد كائن يحوي الناتج التقديري للشيفرة المعطاة في المعامل <code>string</code> أو الكتلة <code>block</code>[<code>a</code>][<code>b</code>].
+
يعاد كائن يحوي الناتج التقديري للشيفرة المعطاة في المعامل <code>string</code> أو الكتلة <code>block</code>.
 
==أمثلة==
 
==أمثلة==
 
مثال على استخدام التابع <code>instance_eval</code>‎:
 
مثال على استخدام التابع <code>instance_eval</code>‎:
سطر 38: سطر 42:
 
==انظر أيضًا==
 
==انظر أيضًا==
 
* التابع [[Ruby/BasicObject/instance_exec | <code>instance_exec</code>]]: ينفِّذ الكتلة البرمجية المُمرَّرة ضمن سياق الكائن المستقبل (<code>obj</code>).
 
* التابع [[Ruby/BasicObject/instance_exec | <code>instance_exec</code>]]: ينفِّذ الكتلة البرمجية المُمرَّرة ضمن سياق الكائن المستقبل (<code>obj</code>).
* التابع ‎<code>__send__</code>‎‎‎: يستدعي تابعًا محددًا مع تمرير وسائط إليه.
+
* التابع ‎[[Ruby/BasicObject/send|<code>__send__</code>‎‎‎]]: يستدعي تابعًا محددًا مع تمرير وسائط إليه.
 
==مصادر==
 
==مصادر==
* قسم التابع instance_eval في الصنف BasicObject في توثيق روبي الرسمي.
+
* [http://ruby-doc.org/core-2.5.1/BasicObject.html#method-i-instance_eval قسم التابع instance_eval في الصنف BasicObject في توثيق روبي الرسمي.]
[a]أرجو التحقق منها :)
 
+abdallatif.ey@gmail.com
 
_تم التعيين إلى Abd Allatif_
 
[b]غلبة الظن أنها صحيحة، لكنني ليستُ متأكدًا 100%
 

مراجعة 18:48، 11 سبتمبر 2018

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

عندما يُمرَّر إلى التابع instance_eval كتلة برمجية، يُمرَّر obj أيضاً كوسيط وحيد للكتلة.

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

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

عندما يُمرَّر إلى التابع instance_eval سلسلة نصية، يوفر المعاملان filename و lineno الاختياريان اسم الملف ورقم سطر البداية اللذان سيُستخدمان عند الإبلاغ عن وجود أخطاء في التصريف (compilation errors).

المعاملات

string

سلسلة نصية تحوي الشيفرة المراد تقدير ناتج تنفيذها.

filename

سلسلة نصية تمثل اسم الملف الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (compilation errors).

lineno

سلسلة نصية تمثل رقم سطر البداية الذي سيستعمل عند الإبلاغ عن حصول أخطاء في التصريف (compilation errors).

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

يعاد كائن يحوي الناتج التقديري للشيفرة المعطاة في المعامل string أو الكتلة block.

أمثلة

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

 class KlassWithSecret
 def initialize
   @secret = 99
 end
 private
 def the_secret
   "Ssssh! The secret is #{@secret}."
 end
end
k = KlassWithSecret.new
k.instance_eval { @secret }          #=> 99
k.instance_eval { the_secret }       #=> "Ssssh! The secret is 99."
k.instance_eval {|obj| obj == self } #=> true

انظر أيضًا

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

مصادر