[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?
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?
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 -~--~~~~--~~--~--~---
[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?
items.each { |item| item.stuff? } if current_user.admin? On May 27, 6:17 pm, Mario Gr rails-mailing-l...@andreas-s.net 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 -~--~~~~--~~--~--~---