الفرق بين المراجعتين ل"Ruby/Module/undef method"

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>undef_method‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby ت...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Module]]
 
[[تصنيف: Ruby Module]]
يمنع التابع <code>undef_method</code> الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. على النقيض من <code>remove_method</code>، والذي يحذف التابع من الصنف المعين؛ سيبحث روبي في الأصناف الأبوية (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل. تُحول الوسائط النصية <code>String</code> إلى رموز.
+
يمنع التابع <code>undef_method</code> الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. على النقيض من التابع <code>[[Ruby/Module/remove method|remove_method]]</code>، والذي يحذف التابع من الصنف المعين؛ سيبحث روبي في الأصناف الأبوية (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل.
  
الناتج:
+
تُحول الوسائط النصية إلى رموز.
<syntaxhighlight lang="ruby">In child
 
In parent
 
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)‎</syntaxhighlight>
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">undef_method(symbol) → self
 
<syntaxhighlight lang="ruby">undef_method(symbol) → self
سطر 14: سطر 11:
 
==المعاملات==
 
==المعاملات==
 
===<code>symbol‎</code>===
 
===<code>symbol‎</code>===
 +
رمز يمثل التابع.
  
 
===<code>string‎</code>===
 
===<code>string‎</code>===
 
+
سلسلة نصية تمثل التابع.
 
 
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد لتابع <code>undef_method</code> الكائن الذي استُدعي معه.
  
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>undef_method‎</code>:
+
مثال على استخدام التابع <code>undef_method‎</code>:<syntaxhighlight lang="ruby">class Parent
<syntaxhighlight lang="ruby">class Parent
 
 
   def hello
 
   def hello
 
     puts "In parent"
 
     puts "In parent"
سطر 41: سطر 38:
 
   undef_method :hello  # prevent any calls to 'hello'
 
   undef_method :hello  # prevent any calls to 'hello'
 
end
 
end
c.hello‎</syntaxhighlight>
+
c.hello‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">In child
 +
In parent
 +
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Module/to_s|to_s]]</code>: يعيد  سلسلة نصية تمثل هذه الوحدة أو الصنف. بالنسبة للأصناف والوحدات الأساسية، سيكون هو الاسم. بالنسبة للمفردات (singletons)، تعاد معلومات عن الأشياء المتعلقة أيضًا.
+
*التابع <code>[[Ruby/Module/to s|remove_method]]</code>: يزيل <code>remove_method</code> التابع المحدد بواسطة الوسيط <code>symbol</code> (انظر فقرة البنية العامة) من الصنف الحالي. للحصول على أمثلة، انظر صفحة<code>[[Ruby/Module/undef method|undef_method]]</code>.
* التابع <code>[[Ruby/Module/using|using]]</code>: يستورد  الأصناف المهذبة (class refinements) من الوحدة نحو التعريف الحالي للصنف أو الوحدة.
 
 
 
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-undef_method قسم  التابع undef_method‎ في الصنف Module‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-undef_method قسم  التابع undef_method‎ في الصنف Module‎ في توثيق روبي الرسمي.]

مراجعة 10:32، 27 أكتوبر 2018

يمنع التابع undef_method الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. على النقيض من التابع remove_method، والذي يحذف التابع من الصنف المعين؛ سيبحث روبي في الأصناف الأبوية (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل.

تُحول الوسائط النصية إلى رموز.

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

undef_method(symbol)  self
undef_method(string)  self

المعاملات

symbol‎

رمز يمثل التابع.

string‎

سلسلة نصية تمثل التابع.

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

يعيد لتابع undef_method الكائن الذي استُدعي معه.

أمثلة

مثال على استخدام التابع undef_method‎:

class Parent
  def hello
    puts "In parent"
  end
end
class Child < Parent
  def hello
    puts "In child"
  end
end
c = Child.new
c.hello
class Child
  remove_method :hello  # remove from child, still in parent
end
c.hello
class Child
  undef_method :hello   # prevent any calls to 'hello'
end
c.hello

الناتج:

In child
In parent
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)‎

انظر أيضا

  • التابع remove_method: يزيل remove_method التابع المحدد بواسطة الوسيط symbol (انظر فقرة البنية العامة) من الصنف الحالي. للحصول على أمثلة، انظر صفحةundef_method.

مصادر