Ruby 初心者スレッド Part 39
■ このスレッドは過去ログ倉庫に格納されています
0591デフォルトの名無しさん
2010/11/22(月) 13:27:55メソッド定義は冗長になるが、正攻法なコードを。
def initialize(options = {})
@turn = nil
@actions = []
for key, value in options
case key
when :turn
@turn = value
when :actions
@actions = value
else
raise ArgumentError
end
end
end
attr_accessor :turn, :actions
使い方は Turn.new :turn => 1, :actions => [:hoge, :fuga, :foo] で。
このTurnクラスのような単なる構造体/レコードをたくさん定義する必要があるなら、
上のやり方だと面倒に感じるかもしれない。もしメタプログラミングに慣れれば、
自分で(Structのように)クラスを返すnewメソッドを定義できるようになる。
(普通はインスタンスを返すよね?)以下はそんなクラスの例。
Turn1 = MyStruct.new :turn, :action
■ このスレッドは過去ログ倉庫に格納されています