ごとけんです
In message "[ruby-list:7811] Re: mail index sort by From:"
on 98/05/01, NAGAI Hidetoshi <nagai / dumbo.ai.kyutech.ac.jp> writes:
>比較のループを途中で打ち切りたいんですよね.
>こんな感じでしょうか.
># find 終了時点の opt が保持されることがポイントですね.(^_^)
そうかぁ find かぁ(ぽん!)
これはいいですね。速いし。
いちおう一箇所だけ間違いがあって
>def sort(*args)
> params = args.collect{|arg|
> next unless arg =~ /^(\w+)(:\w+)?$/
> [(($1 == 'Date')? 'time': $1), (($2 == ':r')? -1: 1)]
> }
> params << ['time', 0] unless params.assoc('time')
>
> ret = 0
> opt = 0
> MailFolder @inbox.sort{|x,y|
> params.find{|key,opt|
> next unless x[key] and y[key]
> (ret = x[key] <=> y[key]).nonzero?
> }
> }
> ret * opt
>end
最後の ret * opt は 上の } の前ですね。
あと、find で見つからなかったときとか、Date: で
ソートするときに time だとちょっと使いにくいとか
ほかの方の作られたライブラリの利用とか、まだまだ
考えることがあるのでもう少し検討して見ることにします。
どうもありがとうございました。
-- gotoken