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

من موسوعة حسوب
< Ruby‏ | Object
أنشأ الصفحة ب'{{DISPLAYTITLE:التابع Object.method في روبي}} يبحث التابع <code>method</code> عن تابعٍ باسمٍ محدَّد في الكائن المعط...'
 
طلا ملخص تعديل
سطر 1: سطر 1:
{{DISPLAYTITLE:التابع Object.method في روبي}}
{{DISPLAYTITLE:التابع <code>Object.method</code> في روبي}}
 
يبحث التابع <code>method</code> عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver)، ثمَّ يعيد كائنًا من النوع <code>Method</code> لذلك التابع (أو يرمي الاستثناء <code>NameError</code>). يتصرَّف الكائن <code>Method</code> كتعبيرٍ مغلق (closure) في نسخ الكائن الخاصة بالكائن الذي يبحث فيه؛ لذلك، تبقى متغيِّرات النسخة (instance variables) وقيمة <code>self</code> متاحةً.
يبحث التابع <code>method</code> عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver)، ثمَّ يعيد كائنًا من النوع <code>Method</code> لذلك التابع (أو يرمي الاستثناء <code>NameError</code>). يتصرَّف الكائن <code>Method</code> كتعبيرٍ مغلق (closure) في نسخ الكائن الخاصة بالكائن الذي يبحث فيه؛ لذلك، تبقى متغيِّرات النسخة (instance variables) وقيمة <code>self</code> متاحةً.


سطر 10: سطر 9:
== المعاملات ==
== المعاملات ==


=== sym ===
=== <code>sym</code> ===
رمزٌ يشير إلى اسم التابع المراد البحث عنه.
رمزٌ يشير إلى اسم التابع المراد البحث عنه.


== القيم المعادة ==
== القيم المعادة ==
يُعاد كائنًا من النوع Method يمثِّل التابع الموافق للاسم sym الموجود في الكائن المعطى، أو يُرمى الاستثناء NameError إذا لم يُعثَر على هذا التابع.
يُعاد كائنًا من النوع <code>Method</code> يمثِّل التابع الموافق للاسم <code>sym</code> الموجود في الكائن المعطى، أو يُرمى الاستثناء <code>NameError</code> إذا لم يُعثَر على هذا التابع.


== أمثلة ==
== أمثلة ==
مثالٌ عن استخدام التابع method:
مثالٌ عن استخدام التابع <code>method</code>:<syntaxhighlight lang="ruby">
 
class Demo
class Demo
 
  def initialize(n)
 def initialize(n)
    @iv = n
 
  end
   @iv = n
  def hello()
 
    "Hello, @iv = #{@iv}"
 end
  end
 
 def hello()
 
   "Hello, @iv = #{@iv}"
 
 end
 
end
end


k = Demo.new(99)
k = Demo.new(99)
m = k.method(:hello)
m = k.method(:hello)
 
m.call   #=> "Hello, @iv = 99"
m.call   #=> "Hello, @iv = 99"


l = Demo.new('Fred')
l = Demo.new('Fred')
m = l.method("hello")
m = l.method("hello")
m.call  #=> "Hello, @iv = Fred"


m.call   #=> "Hello, @iv = Fred"
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* التابع public_method: يبحث عن التوابع العامة فقط بشكل مشابه لعمل التابع method.
* التابع <code>[[Ruby/Object/public method|public_method]]</code>: يبحث عن التوابع العامة فقط بشكل مشابه لعمل التابع method.
* التابع public_send: يَستدعي التابع المعرَّف برمزٍ محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.
* التابع send: يَستدعي التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.
* التابع remove_instance_variable: يَحذِف متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.


*التابع <code>[[uby/Object/public send|public_send]]</code>: يَستدعي التابع المعرَّف برمزٍ محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.
*التابع <code>[[Ruby/Object/send|send]]</code>: يَستدعي التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.
*التابع <code>[[Ruby/Object/remove instance variable|remove_instance_variable]]</code>: يَحذِف متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.
== مصادر ==
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/Object.html#method-i-method صفحة التابع method في الصنف Object في توثيق روبي الرسمي.]
* [http://ruby-doc.org/core-2.5.1/Object.html#method-i-method صفحة التابع method في الصنف Object في توثيق روبي الرسمي.]

مراجعة 14:57، 24 نوفمبر 2018

يبحث التابع method عن تابعٍ باسمٍ محدَّد في الكائن المعطى بوصفه مستقبلًا (receiver)، ثمَّ يعيد كائنًا من النوع Method لذلك التابع (أو يرمي الاستثناء NameError). يتصرَّف الكائن Method كتعبيرٍ مغلق (closure) في نسخ الكائن الخاصة بالكائن الذي يبحث فيه؛ لذلك، تبقى متغيِّرات النسخة (instance variables) وقيمة self متاحةً.

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

method(sym)  method

المعاملات

sym

رمزٌ يشير إلى اسم التابع المراد البحث عنه.

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

يُعاد كائنًا من النوع Method يمثِّل التابع الموافق للاسم sym الموجود في الكائن المعطى، أو يُرمى الاستثناء NameError إذا لم يُعثَر على هذا التابع.

أمثلة

مثالٌ عن استخدام التابع method:

class Demo
  def initialize(n)
    @iv = n
  end
  def hello()
    "Hello, @iv = #{@iv}"
  end
end

k = Demo.new(99)
m = k.method(:hello)
m.call   #=> "Hello, @iv = 99"

l = Demo.new('Fred')
m = l.method("hello")
m.call   #=> "Hello, @iv = Fred"

انظر أيضًا

  • التابع public_method: يبحث عن التوابع العامة فقط بشكل مشابه لعمل التابع method.
  • التابع public_send: يَستدعي التابع المعرَّف برمزٍ محدَّدٍ ويُنفَّذه تلقائيًا مع تمرير أي معاملاتٍ معطاة.
  • التابع send: يَستدعي التابع المعرَّف برمزٍ (symbol) ويُنفَّذه تلقائيًا ويمرِّر إليه أي معاملاتٍ معطاة.
  • التابع remove_instance_variable: يَحذِف متغيِّر نسخةٍ باسمٍ محدَّدٍ من الكائن الذي استدعي معه ويُعيد قيمة ذلك المتغيِّر.

مصادر