التابع 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: يضع قائمة بالثوابت الموجودة المُتجاوزة.