获取nil的未定义方法:尝试访问实例变量时的NilClass

时间:2014-09-30 15:15:56

标签: ruby

我正在尝试访问另一个类中的类的实例变量,但我得到:

: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

我已经省略了这些类和所有其他类中的所有其他方法,因为这是一个赋值,我只需要帮助解决这个问题。

2 个答案:

答案 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,但不应该,它通常是因为它从未因某种原因而被初始化。