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

من موسوعة حسوب
< Ruby‏ | Module
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>undef_method‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby ت...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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>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: سطر 9:
==المعاملات==
==المعاملات==
===<code>symbol‎</code>===
===<code>symbol‎</code>===
[[Ruby/Symbol|رمز]] يمثل التابع.


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


==أمثلة==
==أمثلة==
مثال على استخدام التابع <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: سطر 36:
   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="text">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>[[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‎ في توثيق روبي الرسمي.]

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

مصادر