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

من موسوعة حسوب
ط نقل محمد-بغات صفحة Binding إلى Ruby/Binding
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الصنف <code>Binding </code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE:الصنف <code>Binding</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف:Ruby Class]]
[[تصنيف: Ruby Binding]]
[[تصنيف: Ruby Binding]]
تُغلِّف كائنات الصنف <code>Binding</code> سياق التنفيذ (execution context) في مكان معين في الشيفرة البرمجية، وتحتفظ بذلك السياق لاستخدامه مستقبلًا. يُحتفَظ بالمتغيرات، والتوابع، وقيمة <code>self</code>، وربما كتلة المكرر (iterator block) وكل ما يمكن الوصول إليه في هذا السياق. يمكن إنشاء كائنات الصنف <code>Binding</code> باستخدام التابع <code>Kernel.binding</code>، واستدعاؤها بوساطة التابع <code>Kernel.set_trace_func</code>.
تُغلِّف كائنات الصنف <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) هذه كوسيط ثانٍ للتابع <code>Kernel.eval</code> لإنشاء بيئة للتقييم (evaluation).<syntaxhighlight lang="ruby">
يمكن تمرير كائنات الربط (binding objects) هذه كوسيط ثانٍ للتابع <code>Kernel.eval</code> لإنشاء بيئة للتقييم (evaluation).<syntaxhighlight lang="ruby">class Demo
class Demo
   def initialize(n)
   def initialize(n)
     @secret = n
     @secret = n
سطر 24: سطر 24:


== التوابع العامة (Public Instance Methods) ==
== التوابع العامة (Public Instance Methods) ==
===[[Ruby/Binding/eval | التابع <code>Binding.eval</code> ]]===
===[[Ruby/Binding/eval |<code>Binding.eval</code>]]===
يقدر التابع <code>eval</code> تعابير لغة روبي الممررة إليه في السياق <code>binding</code>. في حال تمرير الوسيطين الاختياريين <code>filename</code> و <code>lineno</code>، فسيُستخدمان عند الإبلاغ عن وجود أخطاء في الصياغة (<code>syntax</code> <code>errors</code>).
يقدر التابع <code>eval</code> تعابير لغة روبي الممررة إليه في السياق <code>binding</code>. في حال تمرير الوسيطين الاختياريين <code>filename</code> و <code>lineno</code>، فسيُستخدمان عند الإبلاغ عن وجود أخطاء في الصياغة (syntax errors).
===[[Ruby/Binding/local_variables | <code>التابعBinding.local_variables</code> ]]===
===[[Ruby/Binding/local_variables |<code>Binding.local_variables</code>]]===
يعيد التابع <code>local_variables</code> أسماء المتغيرات المحلية المعرفة في <code>Binding</code> على شكل رموز (<code>symbols</code>).
يعيد التابع <code>local_variables</code> أسماء المتغيرات المحلية المعرفة في <code>Binding</code> على شكل رموز (symbols).
هذا التابع هو النسخة المختصرة للشيفرة التالية:
===[[Ruby/Binding/local_variable_defined-3F |<code>Binding.local_variable_defined?</code>]] ===
<code>binding</code>.[[Ruby/Binding/eval | <code>eval</code>]]("<code>local_variables</code>")
يتحقق التابع<code>local_variable_defined?</code> ‎ إن كان المتغير <code>symbol</code> المحلي موجودًا أم لا.
===[[Ruby/Binding/local_variable_defined-3F | <code>التابعBinding.local_variable_defined?</code> في ربي]]===
===[[Ruby/Binding/local_variable_get |<code>Binding.local_variable_get</code>]]===
يتحقق التابع[[Ruby/Binding/local_variable_defined-3F | <code>local_variable_defined?</code>]]? ‎ إن كان المتغير <code>symbol</code> المحلي موجودًا أم لا.
هذا التابع هو النسخة المختصرة للشيفرة التالية:
<code>binding</code>.[[Ruby/Binding/eval | <code>eval</code>]]("<code>defined?</code>?(#{<code>symbol</code>}) == '<code>local</code>-<code>variable</code>'")
===[[Ruby/Binding/local_variable_get | <code>التابعBinding.local_variable_get</code> ]]===
يعيد التابع<code>local_variable_get</code> ‎ قيمة المتغير المحلي الممرَّر إليه.
يعيد التابع<code>local_variable_get</code> ‎ قيمة المتغير المحلي الممرَّر إليه.
هذا التابع هو النسخة المختصرة للشيفرة التالية:
===[[Ruby/Binding/local_variable_set |<code>Binding.local_variable_set</code>]]===
<code>binding</code>.[[Ruby/Binding/eval | <code>eval</code>]]("#{<code>symbol</code>}")
===[[Ruby/Binding/local_variable_set | <code>التابعBinding.local_variable_set</code> ]]===
يضبط التابع <code>local_variable_set</code>‎ قيمة المتغير المحلي الممرر إليه إلى قيمة معينة.
يضبط التابع <code>local_variable_set</code>‎ قيمة المتغير المحلي الممرر إليه إلى قيمة معينة.
سلوك هذا التابع مشابه للشيفرة التالية في حال كان بالإمكان إهمال الكائن <code>obj</code> من شيفرة روبي:
===[[Ruby/Binding/receiver |<code>Binding.receiver</code>]]===
<code>binding</code>.[[Ruby/Binding/eval | <code>eval</code>]]("#{<code>symbol</code>} = #{<code>obj</code>}")
يعيد التابع <code>receiver</code> المستقبِل المرتبط (bound receiver) لكائن الربط (binding object).
===[[Ruby/Binding/receiver | <code>التابعBinding.receiver</code> ]]===
يعيد التابع <code>receiver</code> المستقبِل المرتبط (<code>bound</code> <code>receiver</code>) لكائن الربط[<code>a</code>][<code>b</code>] (<code>binding</code> <code>object</code>).


== مصادر ==
== مصادر ==
صفحة الصنف Binding في توثيق روبي الرسمي.
[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).

مصادر

صفحة الصنف Binding في توثيق روبي الرسمي.