我知道一個方法可以如何在Ruby中給定的類動態創建一個方法?
class Klass
define_method foo
創建如何創建一個方法,並通過班級爲PARAM?
def define_method_for klass, method
紅寶石2.2
編輯:用例:
我寫一個嘲諷庫。所以,我想嘲笑任意的類和方法。
我知道一個方法可以如何在Ruby中給定的類動態創建一個方法?
class Klass
define_method foo
創建如何創建一個方法,並通過班級爲PARAM?
def define_method_for klass, method
紅寶石2.2
編輯:用例:
我寫一個嘲諷庫。所以,我想嘲笑任意的類和方法。
我認爲這是你在找什麼:
def define_method_for(klass, method, my_proc)
klass.send(:define_method, method, my_proc)
end
這裏是你將如何使用它:
class Klass
end
my_proc = proc { puts 'foo method called!' }
define_method_for(Klass, :foo, my_proc)
Klass.new.foo
#=> foo method called!
你也可以把它定義是這樣的:
def define_method_for(klass, method, &block)
klass.send(:define_method, method, &block)
end
並使用它:
class Klass
end
define_method_for(Klass, :foo) do
puts 'foo method called!'
end
Klass.new.foo
#=> foo method called!
你可以這樣定義它:
dynamic_name = "ClassName"
class = Object.const_set(dynamic_name, Class.new)
class.send(:define_method, 'method'){puts 'a'}
包裹成的方法很簡單。
要麼是:
klass.class_eval{define_method(:foo){...}}
或:
klass.instance_eval{define_method(:foo){...}}
你爲什麼要這麼做? –
'define_method_for'的第二個參數'方法'的期望類型是什麼? '方法','符號'或'字符串'? – Aetherus
@Aetherus - 一個符號。什麼是「方法」? –