[#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:38452] Re: Enumerable#gather_each

From: Yusuke ENDOH <mame@...>
Date: 2009-05-14 16:11:44 UTC
List: ruby-dev #38452
遠藤です。

gather は基本的に賛成なんですが、nil の特別扱いがちょっと
気持ち悪いです。アドホックというか、シンプルな名前に反して
機能が詰め込まれすぎている、という印象です。

そういう点で、


2009/05/14 11:14 Tanaka Akira <akr@fsij.org>:
> Python のように、each のブロックの第一引数に渡してもいいのか
> もしれません。
>
> enum.gather(init_state) {|elt,state| ... }.each {|category,ary| ... }


このインターフェイスはとてもいいと思います。

  enum.gather {|elt| ... }.select {|cat, ary| cat }

と自然に分離できます。
捨てる部分まで ary を作るのが多少気になるかもしれませんが、
nil の特別扱いまでするメソッドは gather より長くて明確な
メソッド名で別に用意した方がいいと思いました。

まとまりかけの議論を引っ掻き回すようで申し訳ありませんが、
一応意見でした。


> なお、Enumerable#group_by はすでにあるので、名前について真似
> できないのは残念なところです。


とても残念です。
でも chunk は (非ネイティブ的には) よさげに聞こえました。

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread