Thursday, August 13, 2009

Ruby DSL: コンストラクタにブロックで属性を渡す

class Person
  def initialize(&blk)
    instance_eval(&blk)
  end
  protected
  attr_accessor :name, :age, :job
end

kyo = Person.new do
  self.name = 'kyo'
  self.age = 47
  self.job = 'none'
end

p kyo # => nil
# >> #<Person:0x23898 @job="none", @age=47, @name="kyo">

No comments: