التابع define_method الخاص بالصنف Module في روبي
يعرف التابع define_method تابع نُسخ (instance method) في المُستقبِل (receiver). الوسيط المعطى parameter الذي استُدعي معه يمكن أن يكون من النوع Proc أو Method أو UnboundMethod. في حال تمرير كتلة، فستُستخدم كمتن (body) للتابع. تُقيّم هذه الكتلة باستخدام instance_eval، وهو أمر قد يكون مُشكلًا على البعض، لأن define_method خاصة. (لهذا سنحتال ونستخدم send في هذا المثال.)
الناتج:
البنية العامة
define_method(symbol, method) → symbol
define_method(symbol) { block }→ symbol
المعاملات
symbol
method
القيمة المُعادة
أمثلة
مثال على استخدام التابع 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
انظر أيضا
- التابع
constants: في الشلك الأول، يعيد مصفوفة من أسماء كل الثوابت التي يمكن الوصول إليها لحظة الاستدعاء. هناك تابع يحمل نفس الأسم، اضفه إلى الموسوعة الآن؟؟؟ تتضمن هذه القائمة أسماء جميع الوحدات والأصناف المحددة في النطاق الكلي (global scope). - التابع
deprecate_constant: يضع قائمة بالثوابت الموجودة المُتجاوزة.