[ruby-core:62822] [ruby-trunk - Feature #9867] Introduce each/else block into ruby

From: sawadatsuyoshi@...
Date: 2014-05-28 13:54:02 UTC
List: ruby-core #62822
Issue #9867 has been updated by Tsuyoshi Sawada.


Tsuyoshi Sawada wrote:
> =C5=81ukasz Strzebi=C5=84czyk wrote:
>=20
> > ... the 'else' block is invoked when collection is empty.
>=20
> Your proposal is about `any?`, but your explanation mentions emptiness, o=
r `empty?`, and so the usecase and the proposal do not match. Are you confu=
sing `any?` with negation of `empty?`? In some cases, the former can be a s=
horthand for the latter, but they are different.
>=20
> If your real intention was to condition the first part by negation of `em=
pty?` rather than `any?`, then you don't need to condition for the first pa=
rt as empty array will have nothing to iterate over. It can be simply writt=
en as:
>=20
>     array.each do |elem|
>       some_work
>     end
>     unless array.any?
>       do_something_else
>     end



----------------------------------------
Feature #9867: Introduce each/else block into ruby
https://bugs.ruby-lang.org/issues/9867#change-46946

* Author: =C5=81ukasz Strzebi=C5=84czyk
* Status: Feedback
* Priority: Low
* Assignee: Yukihiro Matsumoto
* Category: syntax
* Target version:=20
----------------------------------------
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?



--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next