かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

コンストラクタの引数に渡したハッシュでプロパティを初期化したい!

って機能あるよね?ActiveRecordとかそこらへんに。
ということで、自分でどうやってやってるのか考えてみた。

ハッシュを受け取って、そのkeyをもとにセットするメソッド呼べばいいので…

module HashInitializable
  def initialize hash = nil
    unless hash
      return
    end

    hash.each do |k, v|
      self.send "#{k}=", v
    end
  end
end

class Hoge
  include HashInitializable
  attr_accessor :name, :age
end

h = Hoge.new :name => "Taro", :age => 12
puts "#{h.name} #{h.age}"

こんなんかな?
一応ちゃんとTaro 12と出力される。