kikeda1104's blog

備忘録・技術に関することを書いています。(webエンジニア)

コードの見直し(Ruby)

kikeda1104です。自宅の周りで騒音がひどくいらついて切れましたヽ(`Д´#)ノ ムキー!!。

近所の人が自分の職業を知っているのが、「プログラマ」だと知られているのがなぜですし。 「ゾンビ脳」とかふざけたこと言われていることもあるので、良い加減ここ出て行きたいです。 善行は、頭がおかしい人が多すぎると思います。

愚痴はここまでで、前回記述した、evalを利用して、メソッドを動的に宣言する。スクリプトでしたが。Faradayのコードをもう少し、読み込むことで理解が深まったので、改めて書きます。

コードの見直し

前回のコード

# 動かないです。
eval <<-"EOS"
    def new_methods
      %w(office category).each do |name|
        eval<<"EOS"
           def area_in_#{name}(ksjcd="")
             conn.get '&ksjcd=#{ksjcd}'
           end
        EOS
      end
    end
EOS

修正したコード

class Hoge
  class_eval <<-"RUBY"
    %w(office category).each do |method|
      def area_in_#{method}(ksjcd="")
        conn.get '&ksjcd=#{ksjcd}'
      end
    end
  RUBY
end

クラスのインスタンスを生成したときに、動的にメソッドが定義されるようになります。

以上です。