Brian McCallister
3/24/2005 1:30:00 AM
Ah hah! Thanks, I knew this had to be way too common to not have been
handled. Thank you!
-Brian
On Mar 23, 2005, at 6:09 PM, Assaph Mehr wrote:
>
>
>> The advantage to something like this is if you have one function you
>> want to pass to a number of things, such as lists:
>>
>> irb(main):016:0> a = [1,2,3]
>> => [1, 2, 3]
>> irb(main):017:0> b = [4,5,6]
>> => [4, 5, 6]
>> irb(main):018:0> func = lambda {|i| puts i}
>> => #<Proc:0x0034b1b8@(irb):18>
>> irb(main):019:0> a.each func
>> ArgumentError: wrong number of arguments (1 for 0)
>> from (irb):19:in `each'
>> from (irb):19
>> from :0
>> irb(main):020:0> b.each func
>
> You can easily pass a lambda to somethig that expects a block - just
> put another & before lambda param at the point of call:
>
> irb(main):001:0> a = [1,2,3]
> => [1, 2, 3]
> irb(main):002:0> b = [4,5,6]
> => [4, 5, 6]
> irb(main):003:0> func = lambda{|i| puts i}
> => #<Proc:0x02c2d6d0@(irb):3>
> irb(main):004:0> a.each &func
> 1
> 2
> 3
> => [1, 2, 3]
>
>
>