Ruby:未定义的局部变量(NameError)--但它是定义的



这是我的Naughts and Crosses(井字游戏)游戏代码的一部分。

positions = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
# Returns .. 1 = Square already owned, 2 = Blank square, 0 = Enemy square
def check_square(side, square)
  if positions[square] == side
    state = 1
  elsif positions[square] == B
    state = 2
  else
    state = 0
  end
  return state
end

当我运行程序时,我得到错误:

在"check_square"中:main的未定义局部变量或方法"positions":Object(NameError)

然而,它实际上是在上面定义的。我已经在它自己的.rb中运行了代码片段,它运行得很好,所以我不明白为什么它不工作。我必须假设它与位置的范围有关,但至少对我(初学者程序员)来说,我不明白为什么它在这里不起作用,而是在自己的程序中起作用。

任何帮助都将不胜感激。

局部变量的作用域不能跨越方法定义。在方法定义外部分配的positions在方法定义内部不可见。

例如,为了使其可见,可以将其设置为实例变量、类变量、全局变量或常量。或者,您可以将其作为参数传递给方法。

最新更新