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

>>>>> "G" == GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
G> 短くてカッコ良い! と思いましたが、opt を毎回検査すると
G> 引数の個数に比例(?)して遅くなっちゃうようです。

なるほど.そりゃそうですよね.
では先に検査を済ませておくとして,これではどうでしょう?

def sort(*args)
	params = args.collect{|arg|
		next unless arg =~ /^(\w+)(:\w+)?$/
		[(($1 == 'Date')? 'time': $1), (($2 == ':r')? 1: 0)]
	}
	params << ['time', 0] unless params.assoc('time')

	MailFolder @inbox.sort{|x,y|
		cmp_pair = [Array.new, Array.new]
		params.each{|key,opt|
			next unless x[key] and y[key]
			cmp_pair[opt] << x[key]
			cmp_pair[(opt+1)%2] << y[key]
		}
		cmp_pair[0] <=> cmp_pair[1]
	}
end


G> # 私信: 
G> # どうもごぶさたしてます、dumbo 界隈はお変わりありませんか? 

私信の返事:(^_^;
まぁ,ぼちぼちです.
卒論,修論の学生が perl で書いてたプログラムがぐちゃぐちゃで
メンテナンス性が悪すぎるので,今年の卒論生には 
ruby を教えてるところです.(^_^)

-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp