我对定义方法有疑问。 我有这个班级
class A
def create_method(name,&block)
self.class.send(:define_method, name, &block)
end
end
a = A.new
a.create_method("dyn_meth") {puts "this is dynamic method"}
a.dyn_meth
我设法创建方法名称“dyn_meth”,但现在我想创建方法名称“dyn_meth2”,在正常情况下接受变量是:
def dyn_meth2(var1,var2,&block)
puts "var1 = #{var1} . var2 #{var2}
block.call
end
我如何使用define_method创建“dyn_meth2”?
答案 0 :(得分:0)
喜欢这个吗?
a.create_method("dyn_meth2") {|var1, var2, &block|
puts "var1 = #{var1} . var2 #{var2}"
block.call
}
答案 1 :(得分:0)
Comme ca!
a.create_method("dyn_meth2") { |var| puts "var is #{var}" }
a.dyn_meth2("monkey")
#=> "var is monkey"
如果你想在你的arg上有默认值,那么你确实喜欢这个
a.create_method("dyn_meth2") { |var=2| puts "var is #{var}" }
a.dyn_meth2
#=> "var is 2"
最后但并非最不重要的是,你想要varargs
a.create_method("dyn_meth2") { |*args| puts "var is #{args}" }
a.dyn_meth2(1,2,3)
#=> "var is [1,2,3]