الفرق بين المراجعتين لصفحة: «Ruby/Kernel/eval»

من موسوعة حسوب
< Ruby‏ | Kernel
لا ملخص تعديل
ط مراجعة وتدقيق
 
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Kernel]]
[[تصنيف: Ruby Kernel]]
يقيّم (Evaluates) التابع <code>eval</code> تعبيرات روبي الموجودة في سلسلة نصية. إذا أعطي الوسيط <code>binding</code>، والذي يجب أن يكون من النوع <code>Binding</code>، فسيُجرى التقييم في السياق الخاص بها. في حال تمرير الوسيطين الاختياريين <code>filename</code> و <code>lineno</code>، فسيُستخدمان عند الإبلاغ عن أخطاء في الصياغة.
يقيّم (Evaluates) التابع <code>eval</code> تعبيرات روبي الموجودة في سلسلة نصية.  
==البنية العامة==
 
<syntaxhighlight lang="ruby">eval(string [, binding [, filename [,lineno]]])  → obj‎</syntaxhighlight>
== البنية العامة ==
<syntaxhighlight lang="ruby">eval(string [, binding [, filename [,lineno]]])  → obj‎</syntaxhighlight>إذا أعطي المعامل <code>[[Ruby/Binding|binding]]</code>، فسيُجرَى التقييم في السياق الخاص به. في حال تمرير المعاملين الاختياريين <code>filename</code> و <code>lineno</code>، فسيُستخدمان عند الإبلاغ عن أخطاء الحاصلة في الصياغة.
 
==المعاملات==
==المعاملات==
===<code>string‎</code>===
===<code>string‎</code>===
سطر 11: سطر 13:


===<code>binding‎</code>===
===<code>binding‎</code>===
في حال تمريره فسيُجرى التقييم في السياق الخاص به.
كائن من النوع <code>[[Ruby/Binding|Binding]]</code>. في حال تمريره، فسيُجرى التقييم في السياق الخاص به.


===<code>filename‎</code>===
===<code>filename‎</code>===
يُستخدم عند الإبلاغ عن أخطاء في الصياغة.
يُستخدم عند الإبلاغ عن أخطاءٍ في الصياغة.


===<code>lineno‎</code>===
===<code>lineno‎</code>===
يُستخدم عند الإبلاغ عن أخطاء في الصياغة.
يُستخدم عند الإبلاغ عن أخطاءٍ في الصياغة.


==القيمة المُعادة==
==القيمة المعادة==
تُعاد نتيجة تقييم التعبير المعطى.
تُعاد نتيجة تقييم التعبير المعطى.


سطر 32: سطر 34:
‎</syntaxhighlight>
‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Kernel/chop|chop]]</code>: يكافئ التابع <code>chop</code>  التعبير ‎<code>($_.dup).chop!‎</code> ، باستثناء أنّ <code>nil</code> لا تُعاد أبدًا. انظر صفحة <code>!String#chop</code>.
* التابع <code>[[Ruby/Kernel/chop|chop]]</code>: يكافئ التعبير ‎<code>($_.dup).chop!‎</code> ، باستثناء أنّ <code>nil</code> لا تُعاد أبدًا.
* التابع <code>[[Ruby/Kernel/exec|exec]]</code>: يستبدل العملية الحالية عن طريق تشغيل الأمر الخارجي المعطى.
* التابع <code>[[Ruby/Kernel/exec|exec]]</code>: يستبدل العملية الحالية عن طريق تشغيل الأمر الخارجي المعطى.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-eval قسم التابع eval‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-eval قسم التابع eval‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 11:43، 15 نوفمبر 2018

يقيّم (Evaluates) التابع eval تعبيرات روبي الموجودة في سلسلة نصية.

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

eval(string [, binding [, filename [,lineno]]])   obj

إذا أعطي المعامل binding، فسيُجرَى التقييم في السياق الخاص به. في حال تمرير المعاملين الاختياريين filename و lineno، فسيُستخدمان عند الإبلاغ عن أخطاء الحاصلة في الصياغة.

المعاملات

string‎

سلسلة نصية تحتوي تعبيرات روبي.

binding‎

كائن من النوع Binding. في حال تمريره، فسيُجرى التقييم في السياق الخاص به.

filename‎

يُستخدم عند الإبلاغ عن أخطاءٍ في الصياغة.

lineno‎

يُستخدم عند الإبلاغ عن أخطاءٍ في الصياغة.

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

تُعاد نتيجة تقييم التعبير المعطى.

أمثلة

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

def get_binding(str)
  return binding
end
str = "hello"
eval "str + ' Fred'"                      #=> "hello Fred"
eval "str + ' Fred'", get_binding("bye")  #=> "bye Fred"

انظر أيضا

  • التابع chop: يكافئ التعبير ‎($_.dup).chop!‎ ، باستثناء أنّ nil لا تُعاد أبدًا.
  • التابع exec: يستبدل العملية الحالية عن طريق تشغيل الأمر الخارجي المعطى.

مصادر