From: shugo@... (MAEDA Shugo) Date: 1997-09-18T10:55:35+09:00 Subject: [ruby-list:4388] Re: nif2news.rb 前田です。 In message "[ruby-list:4357] nif2news.rb" Kikutani Makoto wrote: |自分で書いて、唯一毎日使っているrubyプログラムです。 やっぱりrubyはこういうのに便利ですよね。 |元がperlなんでやはり汚ない。イテレータとかないし、rubyらしくないですね。 |あ、$monthはやはり定数か。 最後の実行部でelsifが続くのをもう少しスマートにしたいですね。 最近、文字列処理でHashを使う例がruby-listで出ていたのですが、 actions = [] def actions.add(pattern, action = Proc.new) push [pattern, action] end def actions.call(str) each do |assoc| if str =~ assoc[0] assoc[1].call break end end end actions.add(mail_start) do #メールの処理 end actions.add(patio_start) do #パティオの処理 end # 以下同様... while line = gets actions.call(line) end みたいにするというのはどうでしょう? ちょっと遅くなるかもしれませんが、NIFTYの仕様変更のたびに プログラム全体の制御構造を書き換えなくてすむというメリット があります(^^; # ちなみにHashでなく配列にしたのはパターンマッチの順序が # 問題になるかもしれないと思ったからです。 -- 前田 修吾