[#38392] Enumerable#gather_each — Tanaka Akira <akr@...>

ときに、複数行をまとめて扱いたいことがあります。

47 messages 2009/05/09
[#38394] Re: Enumerable#gather_each — ujihisa <ujihisa@...> 2009/05/09

ujihisaと申します。

[#38400] Re: Enumerable#gather_each — Yukihiro Matsumoto <matz@...> 2009/05/09

まつもと ゆきひろです

[#38399] Re: Enumerable#gather_each — "Akinori MUSHA" <knu@...> 2009/05/09

At Sat, 9 May 2009 15:30:20 +0900,

[#38405] Re: Enumerable#gather_each — Tanaka Akira <akr@...> 2009/05/10

In article <86r5yy2nrg.knu@iDaemons.org>,

[#38417] Re: Enumerable#gather_each — "Akinori MUSHA" <knu@...> 2009/05/10

At Sun, 10 May 2009 10:08:47 +0900,

[#38524] [Bug #1503] -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる — sinnichi eguchi <redmine@...>

Bug #1503: -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる

8 messages 2009/05/22

[ruby-dev:38458] Re: Enumerable#gather_each

From: Tanaka Akira <akr@...>
Date: 2009-05-15 05:06:15 UTC
List: ruby-dev #38458
In article <e0b1e5700905140800y6d701c6fj731a59ffd83b9d79@mail.gmail.com>,
  Yusuke ENDOH <mame@tsg.ne.jp> writes:

>   enum.gather {|elt| ... }.select {|cat, ary| cat }
>
> と自然に分離できます。
> 捨てる部分まで ary を作るのが多少気になるかもしれませんが、

もともと対象が大きいときを対象に考えているので、興味のない部
分はなるべく簡単に処置したいなぁと思っています。

たとえば、chkbuild のログで minitest がテストの順番をランダ
ムに変えるところはソートしてから diff したいんですが、
http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20081213T111000.txt.gz
のように、テスト以外のところが非常に大きいこともあって、そう
いうところは簡単に 1行ずつ出力していきたい、というケースがあ
ります。

そのために :_singleton があるんですが、これがないと

enum.gather {|line| condition ? value : :_singleton }

というのが

enum.gather(n: 0) {|line| condition ? value : (h[:n] += 1) }

などとなって、状態を導入しないといけないことになります。

ある要素を単独でまとまりとするという判断は要素毎にできて、要
素間の関係はないのに、状態を扱わないといけないのは嫌だなぁ、
と。

> nil の特別扱いまでするメソッドは gather より長くて明確な
> メソッド名で別に用意した方がいいと思いました。

特別扱いな値を目立たないところに持っていくことは可能だと思い
ます。

[ruby-dev:38449] とかパッチの中の rdoc には書いてあるんです
が、現在、
nil, false, :_separator が削除で、
:_singleton が単独でのまとまりの指定です。

nil, false は目立つので、シンボルだけというのはひとつの案か
もしれません。

ただ、[ruby-dev:38394] のような期待に答えるなら、むしろ nil,
false を削除とするのは正しいのかもしれない、とも思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread