[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

永井@知能.九工大です.

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21138] Re: Rational 公開しました。

From: Shin-ichiro HARA <sinara@...>
Date: 2003-08-05 08:18:42 UTC
List: ruby-dev #21138
原です。

>まつもと ゆきひろです

>|  p Foo.new.class #=> Foo
>|  p (Foo.new + Foo.new).class #=> Array
>|
>|となるんですね。基本的に組み込みクラスは継承は考えられてないので
>|しょうかね。
>
>そんなことはないです。明らかにレシーバが優先である操作につい
>ては、レシーバと同じのクラスのオブジェクトを返すようにしてい
>ます。
>
>  ruby -e 'class Foo<Array; end; p Foo.new([1,2,3])[0,1].class'

あ、ほんとですね。

>しかし、配列の結合の場合は「レシーバに引数の内容を追加したも
>のを返す」とは考えず、「配列内容の結合」と考えて単なるArray
>を返します。

ふむー、そこの感覚が分からないです。加法はやはりその系で閉じる
のが自然ではないでしょうか。

で、試しに Rational をそのように作ってみました。すると、コード
としてはやや不自然に、また、1%ぐらいスピードも落ちてしまいま
した。



ちょっと話はそれるけど、前から文字列や配列の結合は + ではなくて、
* であるべきではないか、との意見が有りましたが、それの有効な反論
を思いつきました。つまり加法は系で閉じるが乗法は閉じないから加法
が正しい、というわけ。例えば

  3cm + 3cm = 6cm
  3cm * 3cm = 9cm**2

とかね。


In This Thread

Prev Next