الصنف Binding
في روبي
تُغلِّف كائنات الصنف 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).