From: ww@... Date: 2016-04-08T09:17:00+00:00 Subject: [ruby-core:74851] [Ruby trunk Feature#12262] Anti-loop Issue #12262 has been updated by Jens Wille. You can make your last example work with `loop` by just adding a `break` at the end of the loop body. I don't think that warrants a new method. ---------------------------------------- Feature #12262: Anti-loop https://bugs.ruby-lang.org/issues/12262#change-57979 * Author: Tsuyoshi Sawada * Status: Open * Priority: Normal * Assignee: ---------------------------------------- The `loop` method continues by default, and requires the keyword `break` to escape. This is good when the continuing cases are the norm and the escaping cases are exceptional: ~~~RUBY loop do ... if ... ... elsif ... ... elsif ... ... break # breaks on exceptional cases elsif ... ... else ... end end ~~~ But when the continuing cases are exceptional and the escaping cases are the norm, the construction requires a lot of `break`, and it becomes cumbersome: ~~~RUBY loop do ... if ... ... break # lot of breaks elsif ... ... break # lot of breaks elsif ... ... break # lot of breaks elsif ... ... else ... break # lot of breaks end end ~~~ I actually see this use case a lot when user input is asked with validation on a command line script. I request a `loop`-like method that works in the opposite way to `loop`, that is, it escapes (i.e., runs only once) by default, and requires a keyword to continue (perhaps `next`). The second code above would then be written like: ~~~RUBY some_loop_like_method do ... if ... ... elsif ... ... elsif ... ... elsif ... ... next # continues on exceptional cases else ... end end ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: