我正在尝试从头开始在Ruby中实现Observer模式,但是我无法理解的错误在编程时阻止了我。
我已经创建了一个方法来将一些对象添加到实例数组中,但是当我调用此方法时,解释器会返回一个错误,指出:
未定义的方法
push' for nil:NilClass Did you mean? puts (repl):15:in
addObserver' (repl):36:在''
我已经定义了数组,所以你知道为什么我会收到这个错误吗?
(我打电话时收到此错误:matchOne.addObserver(playerOne))
以下是完整的代码:
class Match
attr_accessor :observers, :result
@observers = Array.new
@result = 0
def notifyAll
@observers.each do |observer|
observer.update(self)
end
end
def addObserver(observer)
@observers.push(observer)
end
def increaseResult
@result += 1
notifyAll
end
end
class Player
def update(match)
puts "The result is #{match.result}"
end
end
playerOne = Player.new
matchOne = Match.new
matchOne.addObserver(playerOne)
我事先感谢你的帮助。
答案 0 :(得分:4)
@observers = Array.new
@result = 0
应该是
def initialize
@observers = Array.new
@result = 0
end