الفرق بين المراجعتين لصفحة: «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).