2009-02-22 [長年日記]

_ [ruby] Re: インスタンス変数の内容を楽に特異アクセサに渡す方法を考えた

最近、訳あって Ruby 1.8.4 用のスクリプトを書いてるので、逃避というか釣られて考えた。

class A
  %w[hoge fuga].tap do |names|
    names.each do |name|
      (class << self; self; end).class_eval{attr_accessor name}
      attr_accessor name
    end
    define_method(:to_common) do
      names.each do |name|
        self.class.class_exec(instance_variable_get("@" + name)) do |i|
          instance_variable_set("@" + name, i)
        end
      end
    end
  end
end

define_singleton_method はあるけど、singleton_class_eval はまだない。 instance_variable_{get|set} で @ 必須なのは、んー、やっぱりちょっと面倒だなぁ。 String#+ で済ませたいので、hoge や fuga は String にしてある。

[]

«前の日記(2008-11-30) 最新