ごとけんです

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