ノード クラスとプレーヤー クラスを次のように定義しました。
class Node < OpenStruct
def initialize(parent,tag,&block)
super()
self.parent = parent
self.parent.children << self unless parent.nil?
self.children = []
self.tag = tag
instance_eval(&block) unless block.nil?
end
end
class Player < Node
def initialize(parent)
Node.new(parent,:player) do
self.turn_num = 1
end
end
end
インスタンス変数 player はによって作成されました
player = Player.new(room) # room is the parent node which was defined
puts player.turn_num
そして、私はエラーを受け取りました:
in `method_missing': undefined method `[]' for nil:NilClass (NoMethodError)
どこが間違っていたのかを理解するのを手伝ってもらえますか? ありがとう!
編集:
問題は、Player クラスの初期化にあるはずです。コードを変更しました
class Player < Node
def self.new(parent)
Node.new(parent,:player) do
self.turn_num = 1
end
end
end
するとエラーが出ない。ここで初期化して何が悪いの?