From: Banzai Date: 2007-06-18T00:15:01+09:00 Subject: Re: Syntax error with blocks On 2007-06-17 10:05:37 -0500, Oliver Sauders said: > OK guys, wtf am I doing wrong here? > The manual says I should be able to do this. > > ======================= > > irb(main):150:0> { puts 'foo' } > SyntaxError: compile error > (irb):150: syntax error, unexpected tSTRING_BEG, expecting kDO or '{' or > '(' > { puts 'foo' } > ^ > (irb):150: syntax error, unexpected '}', expecting $end > from (irb):150 > from :0 > irb(main):151:0> { puts('foo') } > SyntaxError: compile error > (irb):151: odd number list for Hash > from (irb):151 > from :0 > irb(main):158:0> do puts 'foo' end > SyntaxError: compile error > (irb):158: syntax error, unexpected kDO > do puts 'foo' end > ^ > (irb):158: syntax error, unexpected kEND, expecting $end > from (irb):158 > from :0 > irb(main):160:0> do; puts 'foo'; end > SyntaxError: compile error > (irb):160: syntax error, unexpected kDO > do; puts 'foo'; end > ^ > (irb):160: syntax error, unexpected kEND, expecting $end > from (irb):160 > from :0 A code block is not a valid statement. If you want to create a Proc object, use lambda. irb(main):001:0> x = lambda { puts 'foo' } => # irb(main):002:0> x.call foo => nil -- H. Asari