创建带参数的动态方法
Create dynamic method that takes argument
是否可以使用 define_method
声明动态方法来执行带参数的块的 instance_exec
?像这样:
class D
def self.adapt (method,*args,&impl)
define_method(method) do
instance_exec(args,impl)
end
end
end
D.adapt(:foo,a,b) { a + b }
puts D.new.foo(1,2)
是的,您可以:
class D < Struct.new(:c)
def self.adapt (method, &impl)
define_method(method) do |*args|
instance_exec(*args, &impl)
end
end
end
D.adapt(:foo) { |a, b| a + b + c }
puts D.new(3).foo(1, 2)
# => 6
是否可以使用 define_method
声明动态方法来执行带参数的块的 instance_exec
?像这样:
class D
def self.adapt (method,*args,&impl)
define_method(method) do
instance_exec(args,impl)
end
end
end
D.adapt(:foo,a,b) { a + b }
puts D.new.foo(1,2)
是的,您可以:
class D < Struct.new(:c)
def self.adapt (method, &impl)
define_method(method) do |*args|
instance_exec(*args, &impl)
end
end
end
D.adapt(:foo) { |a, b| a + b + c }
puts D.new(3).foo(1, 2)
# => 6