我正在尝试访问另一个类中的类的实例变量,但我得到:
:in `lies_outside?': undefined method `x_coordinate' for nil:NilClass (NoMethodError)
这是我使用变量的地方:
class Grid
def initialize(size)
@size = size
@current_Location = Point.new(0, 0)
@temp_loaction = Point.new(0, 0)
end
def lies_outside?
if @temp_location.x_coordinate < 0 || @temp_location.x_coordinate >= @size
return false
elsif @temp_location.y_coordinate < 0 || @temp_location.y_coordinate >= @size
return false
end
end
这是变量所在的类:
class Point
attr_reader :x_coordinate
attr_reader :y_coordinate
def initialize (x, y)
@x_coordinate = x
@y_coordinate = y
@x = @y = 0
end
我已经省略了这些类和所有其他类中的所有其他方法,因为这是一个赋值,我只需要帮助解决这个问题。
答案 0 :(得分:3)
您正在定义此var:@temp_loaction = Point.new(0, 0)
然后以@temp_location
访问它(注意拼写错误)
答案 1 :(得分:1)
查看错误消息。它说NilClass
没有方法x_coordinate
。这意味着x_coordinate
,@temp_location
的接收者是NilClass
的实例,即nil
。所以你应该问,&#34;为什么@temp_location
等于nil
?&#34;。查看上次为该变量赋值的位置。答对了!由于拼写错误,您从未为其分配值。如果变量等于nil
,但不应该,它通常是因为它从未因某种原因而被初始化。