define_method could be used to define methods:
define_method(:m) do |a|
end
which is equivalent to the following:
def m(a)
end
However, what is the equivalent form of the following using define_method:
def m(a=false)
end
Note that I’d need to be able to call m() without giving any argument.
This actually just works like you would expect in Ruby 1.9!
If you need 1.8 compatibility, but you don’t necessarily need a closure to define your method with, consider using
class_evalwith a string argument and a regular call todef:Otherwise follow the suggestion in the thread that philippe linked to. Example: