التابع define_method
الخاص بالصنف Module
في روبي
يعرّف التابع define_method
تابع نُسخة (instance method) في المُستقبِل (receiver). الوسيط المعطى method
، يمكن أن يكون من النوع Proc
أو Method
أو UnboundMethod
. في حال تمرير كتلة، فستُستخدم كمتن (body) للتابع. تُقيّم هذه الكتلة باستخدام التابع instance_eval
، وهو أمر قد يكون مُشكلًا على البعض، لأن define_method
خاصة. (لهذا سنحتال ونستخدم التابع send
في المثال أسفله.)
البنية العامة
define_method(symbol, method) → symbol
define_method(symbol) { block }→ symbol
المعاملات
symbol
رمز.
method
تابع نُسخة.
القيمة المُعادة
يعيد رمز symbol.
أمثلة
مثال على استخدام التابع define_method
:
class A
def fred
puts "In Fred"
end
def create_method(name, &block)
self.class.send(:define_method, name, &block)
end
define_method(:wilma) { puts "Charge it!" }
end
class B < A
define_method(:barney, instance_method(:fred))
end
a = B.new
a.barney
a.wilma
a.create_method(:betty) { p self }
a.betty
الناتج:
In Fred
Charge it!
#<B:0x401b39e8>
انظر أيضا
- التابع
constants
: يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. - التابع
deprecate_constant
: يضع قائمة بالثوابت الموجودة المُتجاوزة.