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

من موسوعة حسوب
< Ruby‏ | Module
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>undef_method‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Module.undef_method‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module Class]]
يمنع التابع <code>undef_method</code> الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. على النقيض من التابع <code>[[Ruby/Module/remove method|remove_method]]</code>، والذي يحذف التابع من الصنف المعين؛ سيبحث روبي في الأصناف الأبوية (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل.
يمنع التابع <code>undef_method</code> الصنف الحالي من الاستجابة للاستدعاءات الموجهة إلى التابع المعطى. سلوك هذا التابع مخالف لسلوك التابع <code>[[Ruby/Module/remove method|remove_method]]</code> الذي يحذف التابع من الصنف المعين؛ ستبحث روبي في الأصناف العليا (superclasses) وفي الوحدات المختلطة (mixed-in modules) عن مُستقبِل (receiver) محتمل.
 
تُحول الوسائط النصية إلى رموز.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">undef_method(symbol) → self
<syntaxhighlight lang="ruby">undef_method(symbol) → self
سطر 11: سطر 9:
==المعاملات==
==المعاملات==
===<code>symbol‎</code>===
===<code>symbol‎</code>===
رمز يمثل التابع.
[[Ruby/Symbol|رمز]] يمثل التابع.


===<code>string‎</code>===
===<code>string‎</code>===
سلسلة نصية تمثل التابع.
[[Ruby/String|سلسلة نصية]] تمثل التابع. يحول هذا المعامل إن أعطي إلى [[Ruby/Symbol|رمز]].
==القيمة المُعادة==
==القيمة المعادة==
يعيد لتابع <code>undef_method</code> الكائن الذي استُدعي معه.
يعاد الكائن المعطى نفسه.


==أمثلة==
==أمثلة==
سطر 38: سطر 36:
   undef_method :hello  # prevent any calls to 'hello'
   undef_method :hello  # prevent any calls to 'hello'
end
end
c.hello‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">In child
c.hello‎</syntaxhighlight>ناتج تنفيذ الشيفرة هو:<syntaxhighlight lang="text">In child
In parent
In parent
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)‎</syntaxhighlight>
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
*التابع <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/to s|remove_method]]</code>: يزيل تابعًا ذا اسم محدَّد من الصنف الحالي.
==مصادر==
==مصادر==
*[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‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 17:50، 19 نوفمبر 2018

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

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

undef_method(symbol)  self
undef_method(string)  self

المعاملات

symbol‎

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

string‎

سلسلة نصية تمثل التابع. يحول هذا المعامل إن أعطي إلى رمز.

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

يعاد الكائن المعطى نفسه.

أمثلة

مثال على استخدام التابع 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: يزيل تابعًا ذا اسم محدَّد من الصنف الحالي.

مصادر