[Rails] Re: Combine if and do in a single line?
Frederick Cheung wrote: > {} binds more tightly than do..end - in some cases this can lead to > your block being passed to the 'wrong' method: Interesting, makes sense. Personally, that's one reason I don't like making method calls without parens, or doing anything else that relies on non-obvious order-of-evaluation-binding just to save a couple of parens. foo( bar {} ) or foo( bar do end ) will both do the same thing. Although the latter is kind of weird style, if I need a multi-line block for bar, I'd personally just use a temporary var instead. result = bar do end foo(result) But everyone's got their own style, I guess. Of course you COULD use {||} with multi-lines too, but it would also be stylistically weird in my opinion in that case. foo bar {|a| stuff more stuff } That's just weird. And if I DID it, I'd still want to put parens in around foo's argument, which would make it even weirder looking. Jonathan -- Posted via http://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 -~--~~~~--~~--~--~---
[Rails] Re: Combine if and do in a single line?
On May 30, 7:03 pm, Marnen Laibow-Koser 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 -~--~~~~--~~--~--~---
[Rails] Re: Combine if and do in a single line?
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. 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-Koser http://www.marnen.org mar...@marnen.org -- Posted via http://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 -~--~~~~--~~--~--~---
[Rails] Re: Combine if and do in a single line?
Mario Gr wrote: > Is there a way to combine if and do into a single line? > > items.each do |item| if current_user.admin? > #do stuff > end > > Thanks! Freddy Andersen wrote: > items.each { |item| item.stuff? } if current_user.admin? Which you actually COULD write like this too, but I'm not sure if it would be considered easily readable: items.each do |item| #do stuff end if current_user.admin? The {| | } and the 'do' syntaxes are interchangeable in all ways. More of a Ruby question than a Rails one. -- Posted via http://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 -~--~~~~--~~--~--~---
[Rails] Re: Combine if and do in a single line?
items.each { |item| item.stuff? } if current_user.admin? On May 27, 6:17 pm, Mario Gr wrote: > Is there a way to combine if and do into a single line? > > items.each do |item| if current_user.admin? > #do stuff > end > > Thanks! > -- > 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 -~--~~~~--~~--~--~---