From: dblack@... Date: 2007-08-10T04:00:26+09:00 Subject: Re: define_method with default parameters Hi -- On Fri, 10 Aug 2007, Tom Werner wrote: > Gordon Thiesfeld wrote: >> On Aug 9, 11:40 am, Emmanuel Oga >> wrote: >> >>> how can i use define_method to assign default parameters? >>> >>> >> >> Not sure if this is the most elegant way, but: >> >> define_method(:method_name) do |*args| >> parameter, parameter2 = *args >> parameter2 ||= 'default' >> puts parameter >> puts parameter2 >> end >> >> >> > > > Has the addition of block argument defaults to the language been considered? Yes, quite often :-) > There are a number of places (especially in define_method, Proc.new, and > lambda) where it would come in handy. The syntax would of course be: > > def foo > yield 'from method' > end > > foo do |x, y = 'from default'| > puts x > puts y > end > > Which would output: > > from method > from default > > I've seen this come up enough that its addition would seem welcome. Are there > arguments against it? The problem is with something like: m do |a, b = 1 | 2 | 3; end you can't tell which | is doing what. David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)