Rubyでメソッドの引数の変数名をそのまま同名のインスタンス変数に代入したい
インスタンスを生成する時に引数が多くなることはぼちぼちあると思う。
んで、その引数を受け取るローカル変数の名前と代入したいインスタンス変数の名前が同じなこともよくあることだと思う。
でも、それをこんな風に書くのは何とも面倒。
class Hoge def hogehoge(var1, var2, var3, ……) @var1 = var1 @var2 = var2h @var3 = var3 …… end end
こんなの書きたくないけど書かなければ代入できない。
てなわけでやりたいことを自動化してRuby自身にやってもらうことにした。
class Hoge def hogehoge(var1, var2, var3, ……) self.method(__method__).parameters.each do |arg_type, arg_name| instance_eval "@#{arg_name} = #{arg_name}" end end end
これで解決した……のかな?
[追記]
RubyistたちのDRY症候群との戦い
これに書いてあるのも似たようなことをしている……のかな?