On May 30, 7:03 pm, Marnen Laibow-Koser <rails-mailing-l...@andreas-
s.net> wrote:
> Jonathan Rochkind wrote:
>
> [...]
>
> > The {| | } and the 'do' syntaxes are interchangeable in all ways.  
>
> Almost.  I've run across a couple of cases where one works and the other
> doesn't -- one creates a Proc and the other doesn't, or something like
> that.  

{} binds more tightly than do..end - in some cases this can lead to
your block being passed to the 'wrong' method:

def foo(x)
  puts "foo #{block_given?}"
end

def bar
  puts "bar #{block_given?}"
end

running foo bar {} outputs

bar true
foo false

but running

foo bar do
end

outputs

boo false
foo true

Fred
> But that's vanishingly rare, and 99 times out of 100, you will
> not go wrong to treat them as interchangeable.
>
> > More
> > of a Ruby question than a Rails one.
>
> Yup.
>
> Best,
> --
> Marnen Laibow-Koserhttp://www.marnen.org
> mar...@marnen.org
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to