[#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:38373] Re: [ruby-cvs:30538] Ruby:r23320 (trunk): * lib/set.rb (SortedSet#add): Do not let an uncomparable object

From: "Akinori MUSHA" <knu@...>
Date: 2009-05-04 21:07:28 UTC
List: ruby-dev #38373
At Mon, 4 May 2009 23:44:22 +0900,
Yugui wrote:
> Yuguiです。
>
> On 5/1/09 4:46 PM, knu@ruby-lang.org wrote:
> > knu	2009-05-01 16:46:23 +0900 (Fri, 01 May 2009)
> >
> >   New Revision: 23320
> >
> >   http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23320
> >
> >   Log:
> >     * lib/set.rb (SortedSet#add): Do not let an uncomparable object
> >       in. [Bug #118]
>
> この修正で引数のクラスがComparableをincludeしていることを要請しています
> けれども、respond_to?(:<=>) だけ要請した方がよいんではないでしょうか。

 SortedSet なのだから sort できれば(<=> メソッドがあれば)十分、
というのは有力な論点ですね。

> is_a?(Comparable)というのはインターフェースではなく実装の話だと思うので。

 そこはあまり分離できない気がします。 <=> を定義しながら include
Comparable せずに自前で < > 等を定義することは現実的にはほとんど
ないでしょうし、 Array が <=> を定義しつつもあえて include
Comparable していないのは、便宜上ソートは許すが、一般に比較できる
という性質については否定したいからですよね。

 SortedSet はいくつかの機能追加と最適化を予定しており、その中で
要素のチェックについても見直します。実際のところ、あまり
(a<=>b) > 0 のような書き方はしたくなく、 < > 等を仮定するためには
is_a?(Comparable) が手っ取り早いのですが。

--
Akinori MUSHA / http://akinori.org/

In This Thread