Это часть моего кода для игры Naughts and Crosses (tic-tac-toe).Ruby: неопределенная локальная переменная (NameError) - но она определена
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
Когда я запускаю программу, я получаю ошибку:
in `check_square': undefined local variable or method `positions' for main:Object (NameError)
Однако это буквально определено прямо над ним. Я запустил фрагмент кода в своем собственном .rb, и он отлично работает, поэтому я не понимаю, почему он не работает. Я должен предположить, что это связано с объемом позиций, но, по крайней мере, для меня (начинающий программист), я не понимаю, почему он здесь не работает, а делает в своей собственной программе.
Любая помощь с радостью оценивается.
Спасибо, я установил его в глобальную переменную, и теперь он работает! –
Однако глобальная переменная не рекомендуется в объектно-ориентированном программировании. – sawa
что бы вы порекомендовали использовать вместо этого? –