From: rr.rosas@... Date: 2014-05-28T11:13:31+00:00 Subject: [ruby-core:62820] [ruby-trunk - Feature #9867] Introduce each/else block into ruby Issue #9867 has been updated by Rodrigo Rosenfeld Rosas. Ah, now I see. Indeed it would be useful for templates processing. Since I barely write any ERB those days, that's probably the reason why I never needed something like that... For example, this is how I'd handle those cases usually in my methods: ~~~ (do_something_else; return) if array.empty? array.each {...} ~~~ But even this is not that much common in my code. Way more common is the situation where a variable could be even an array or not be present (in which case I'd get nil). In such cases I often write code like: ~~~ (hash[:array] || []).each{...} # or: Array(hash[:array]).each{...} ~~~ But I can definitely see how your proposal would be useful for template languages, like ERB. It's also interesting to point out that other people seem to be interested on a better approach for handling this case: http://stackoverflow.com/questions/1027871/rails-an-elegant-way-to-display-a-message-when-there-are-no-elements-in-databas Here's one suggested idiom for dealing with it that you might consider: ~~~ <% if @messages.each do |message| %> <%# code or partial to display the message %> <% end.empty? %> You have no messages. <% end %> ~~~ ---------------------------------------- Feature #9867: Introduce each/else block into ruby https://bugs.ruby-lang.org/issues/9867#change-46944 * Author: ��ukasz Strzebi��czyk * Status: Feedback * Priority: Low * Assignee: Yukihiro Matsumoto * Category: syntax * Target version: ---------------------------------------- Hi Code like this happens quite often: if array.any? array.each do |elem| some_work end else do_something_else end I was thinking if it was possible, to introduce syntax like this: array.each do |elem| some_work else do_something_else end where code in else would fire if array is empty. This would simplify a lot of code nicely and would be completely backwards compatible. Is that a good idea? -- https://bugs.ruby-lang.org/