From: Tadayoshi Funaba Date: 1998-04-08T20:10:41+09:00 Subject: [ruby-dev:2199] Re: [ruby-list:7298] Re: cmp operator ふなばです。 >[struct1.mem1, struct1.mem2] <=> [struct2.mem1, struct2.mem2] >というように書けばいいでしょうし, >その方が何をどのように比較しているかが明確になるでしょう. >どうしてもやりたければ struct1.values <=> stract2.values でも >できますし,struct1.values[0..2] <=> stract2.values[0..2] >なんてこともできますよね. 永井さんはとても効率のことを気にしていたので、逆にそのあたりを説得せな ばならないと思っていました。配列を生成するのは非効率的だ、といわれると 思ってたんですね。で、あらかじめ用意していた答は、演算子 <> による方法 などでは、ある程度対象や個数が決っていて、なおかつ対象が高々数個である 場合にしかうまくつかえそうにない (非常に限られた場面でしたつかえない)、 配列の生成はあらかじめ使われかたを考えて構成しておけば、そんなにおかし なことにならない、配列で一括してお任せできれば却って効率よく処理できる 可能性がある、というようなことを考えていました。 配列にあるからいらない、という考えもあるでしょうが、配列にあるんだった ら、構造体にもあっていい、という考えもあるわけで、話の経緯もあってか、 なんとなく、なんでないの? という気持があります (効率のことは関係ありま せん)。 あまり大袈裟にしたくないという気持もあるんですが、うまい考えが あればいいな、と思います。 >配列比較は少し注意して用いる必要がありそうなものですので >(必ず比較できるというわけではないですし), >必要に応じて Comparable を取り込むという形式の方がいいと思います. これはまだちょっと納得しきれていないんですよねえ、まつもとさんの気恥ず かしい、 というのはよくわかる気がするんです。Comparable にしなくてもい いんで、これもうまくできたらいいな、と思います (うーん、こればっかり)。 # でも、どうしたらいいかわからない。しばらく様子をみよう :-) --Tadayoshi Funaba