Joel VanderWerf
8/24/2008 1:18:00 AM
Raj Singh wrote:
> This works.
>
> class Person
> def hi(inputproc)
> inputproc.call
> end
> end
>
> Person.new.hi lambda { puts 'wow1'; puts 'wow2'}
>
> However when I try to split the code inside block in multiple line the
> code does NOT work anymore.
>
> This does NOT work.
>
> class Person
> def hi(inputproc)
> inputproc.call
> end
> end
>
> Person.new.hi lambda do
> puts 'wow1'
> puts 'wow2'
> end
>
>
> How do I create a proc consisting of multiple lines of code.
do..end and {..} have different precedence. Your multiline example
should work of you use {..} instead.
Or you can force precedence with (..).
What's going on with:
> Person.new.hi lambda do
> puts 'wow1'
> puts 'wow2'
> end
is that lambda is interpreted as the first param to #hi, and the do..end
block is passed as a block to #hi (rather than to #lambda).
HTH.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407