永井@知能.九工大です. >>>>> "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