define_method
可用于定义方法:
define_method(:m) do |a|
end
这相当于:
def m(a)
end
然而,用define_method
表示的下列等价形式是什么:
def m(a=false)
end
Note that I'd need to be able to call 100 without giving any argument.
define_method
可用于定义方法:
define_method(:m) do |a|
end
这相当于:
def m(a)
end
然而,用define_method
表示的下列等价形式是什么:
def m(a=false)
end
Note that I'd need to be able to call 100 without giving any argument.
这实际上就像你在Ruby 1.9中所期望的那样!
define_method :m do |a = false|
end
如果需要1.8个兼容性,但不一定需要一个闭包来定义方法,请考虑使用class_eval
的字符串参数和def
的常规调用:
class_eval <<-EVAL
def #{"m"}(a = false)
end
EVAL
否则,请遵循philippe链接的帖子中的建议.例子:
define_method :m do |*args|
a = args.first
end