Hi --

On Fri, 10 Aug 2007, Tom Werner wrote:

> Gordon Thiesfeld wrote:
>> On Aug 9, 11:40 am, Emmanuel Oga <oga_emmanuel_... / yahoo.com.ar>
>> 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)