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

مصادر