ごとけんです

In message "[ruby-list:7768] Re: mail index sort by From:"
    on 98/04/28, Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp> writes:

>原です。
>
>In message "[ruby-list:7762] Re: mail index sort by From:"
>    on 98/04/28, WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp> writes:
>|
>|わたなべです.
>
>|  folder.sort{|i,j|
>|    (i['From']<=>j['From']).nonzero? or
>|    (i['Subject']<=>j['Subject']).nonzero? or
>|    i.time<=>j.time
>|  }
>
>これが最良ですね。こうしてみると nonzero? って名前長いな
>あ。 nzero? あるいは nz? ぐらいで良かった。? も無くてよ
>かったような気もする。

たしかにこれが早そうですが、
nonzero? っていつからあるんですか? 
1.1b9_06 には無いんですけど。
# 最新を手にいれろと言うのはもっともですね ^^;;
あとこの場合、比較に用いられる値は
途中で nonzero? が true になったら true になっちゃいませんか? 
それとも nonzero? って false か数値を返すものなんでしょうか? 

あと、前のメールで3進で重みを着けなくても良いんじゃないかと
指摘されましたが、ただ単に和を取るとダメだと思います。
例えば、

a[1] <=> a[2]  # => 0
b[1] <=> b[2]  # => 0

のときと

a[1] <=> a[2]  # => -1
b[1] <=> b[2]  # =>  1

のときいずれでも和を取ると 0 になっちゃいます。
もし a に大きな重みを付けたければ結局 +1 して 3進で
重み付けすることになると思います。

-- gotoken