From: Joel VanderWerf Date: 2008-08-24T10:17:47+09:00 Subject: Re: How to create a block consisting of multiple lines. 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