الفرق بين المراجعتين لصفحة: «Ruby/Binding»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: <code>الصنفBinding </code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Binding تُغلِّف كائنات...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(4 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: <code> | <noinclude>{{DISPLAYTITLE:الصنف <code>Binding</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف:Ruby Class]] | |||
[[تصنيف: Ruby Binding]] | [[تصنيف: Ruby Binding]] | ||
تُغلِّف كائنات الصنف Binding سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة | تُغلِّف كائنات الصنف <code>Binding</code> سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة <code>self</code>، وربما كتلة المكرر (iterator block) وكل ما يمكن الوصول إليه في هذا السياق. يمكن إنشاء كائنات الصنف <code>Binding</code> باستخدام التابع <code>Kernel.binding</code>، واستدعاؤها بوساطة التابع <code>Kernel.set_trace_func</code>. | ||
يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع Kernel.eval لإنشاء بيئة للتقييم (evaluation). | يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع <code>Kernel.eval</code> لإنشاء بيئة للتقييم (evaluation).<syntaxhighlight lang="ruby">class Demo | ||
class Demo | |||
def initialize(n) | def initialize(n) | ||
@secret = n | @secret = n | ||
سطر 21: | سطر 21: | ||
eval("@secret", b2) #=> -3 | eval("@secret", b2) #=> -3 | ||
eval("@secret") #=> nil | eval("@secret") #=> nil | ||
مصادر | </syntaxhighlight> | ||
صفحة الصنف Binding في توثيق روبي الرسمي. | |||
== التوابع العامة (Public Instance Methods) == | |||
===[[Ruby/Binding/eval |<code>Binding.eval</code>]]=== | |||
يقدر التابع <code>eval</code> تعابير لغة روبي الممررة إليه في السياق <code>binding</code>. في حال تمرير الوسيطين الاختياريين <code>filename</code> و <code>lineno</code>، فسيُستخدمان عند الإبلاغ عن وجود أخطاء في الصياغة (syntax errors). | |||
===[[Ruby/Binding/local_variables |<code>Binding.local_variables</code>]]=== | |||
يعيد التابع <code>local_variables</code> أسماء المتغيرات المحلية المعرفة في <code>Binding</code> على شكل رموز (symbols). | |||
===[[Ruby/Binding/local_variable_defined-3F |<code>Binding.local_variable_defined?</code>]] === | |||
يتحقق التابع<code>local_variable_defined?</code> إن كان المتغير <code>symbol</code> المحلي موجودًا أم لا. | |||
===[[Ruby/Binding/local_variable_get |<code>Binding.local_variable_get</code>]]=== | |||
يعيد التابع<code>local_variable_get</code> قيمة المتغير المحلي الممرَّر إليه. | |||
===[[Ruby/Binding/local_variable_set |<code>Binding.local_variable_set</code>]]=== | |||
يضبط التابع <code>local_variable_set</code> قيمة المتغير المحلي الممرر إليه إلى قيمة معينة. | |||
===[[Ruby/Binding/receiver |<code>Binding.receiver</code>]]=== | |||
يعيد التابع <code>receiver</code> المستقبِل المرتبط (bound receiver) لكائن الربط (binding object). | |||
== مصادر == | |||
[http://ruby-doc.org/core-2.5.1/Binding.html صفحة الصنف Binding في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 08:08، 4 أكتوبر 2018
تُغلِّف كائنات الصنف Binding
سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة self
، وربما كتلة المكرر (iterator block) وكل ما يمكن الوصول إليه في هذا السياق. يمكن إنشاء كائنات الصنف Binding
باستخدام التابع Kernel.binding
، واستدعاؤها بوساطة التابع Kernel.set_trace_func
.
يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع Kernel.eval
لإنشاء بيئة للتقييم (evaluation).
class Demo
def initialize(n)
@secret = n
end
def get_binding
binding
end
end
k1 = Demo.new(99)
b1 = k1.get_binding
k2 = Demo.new(-3)
b2 = k2.get_binding
eval("@secret", b1) #=> 99
eval("@secret", b2) #=> -3
eval("@secret") #=> nil
التوابع العامة (Public Instance Methods)
Binding.eval
يقدر التابع eval
تعابير لغة روبي الممررة إليه في السياق binding
. في حال تمرير الوسيطين الاختياريين filename
و lineno
، فسيُستخدمان عند الإبلاغ عن وجود أخطاء في الصياغة (syntax errors).
Binding.local_variables
يعيد التابع local_variables
أسماء المتغيرات المحلية المعرفة في Binding
على شكل رموز (symbols).
Binding.local_variable_defined?
يتحقق التابعlocal_variable_defined?
إن كان المتغير symbol
المحلي موجودًا أم لا.
Binding.local_variable_get
يعيد التابعlocal_variable_get
قيمة المتغير المحلي الممرَّر إليه.
Binding.local_variable_set
يضبط التابع local_variable_set
قيمة المتغير المحلي الممرر إليه إلى قيمة معينة.
Binding.receiver
يعيد التابع receiver
المستقبِل المرتبط (bound receiver) لكائن الربط (binding object).