【问题标题】:Why there is an error in the code dynamic constant assignment Ruby [duplicate]为什么代码动态常量赋值Ruby会出错[重复]
【发布时间】:2019-10-16 18:17:04
【问题描述】:
# Global constants

X = "X"             # cross
O = "O"             # toe
EMPTY = ""          # empty board
TIE = "DRAW"        # draw state
NUMBER_SQUARES = 9  # number of fields on the board

创建一个新的游戏板 - 等于EMPTY 的九个元素的列表并返回它

def new_playing_board
    create_board = Array.new(NUMBER_SQUARES) { EMPTY }
end

board = new_playing_board

该函数获取棋盘并返回游戏的获胜者。 可以返回四个可能的值:"X""O"——计算机或人, TIE - 如果所有字段都已完成, nil - 其中一个字段为空且未定义获胜者

def win_play(board)

    WAYS_TO_WIN = [    # backtrace error: dynamic constant assignment WAYS_TO_WIN = [ rb:136
                [0, 1, 2],
                [3, 4, 5],
                [6, 7, 8],
                [0, 3, 6],
                [1, 4, 7],
                [2, 5, 8],
                [0, 4, 8],
                [2, 4, 6]
                ]


    WAYS_TO_WIN.each do |row|
        if (board[row[0]] == board[row[1]] && board[row[0]] == board[row[2]]) != EMPTY
            winner = board[row[0]]
            return winner
        end

        unless board.include?(EMPTY)
            return TIE
        end
    end

    return nil 

end


win_play(board)

回溯:动态常量赋值 WAYS_TO_WIN = [ rb:136

【问题讨论】:

  • 你指的错误是什么?什么是回溯?
  • 显示的固定错误
  • 查看this了解更多信息。
  • 必须放,今天的积分用完了:)

标签: ruby


【解决方案1】:

每次调用 win_play 时,您都会重新分配 WAYS_TO_WIN

def win_play(board)

    WAYS_TO_WIN =

在方法之外定义WAYS_TO_WIN,例如与所有其他常量

NUMBER_SQUARES = 9  # number of fields on the board
WAYS_TO_WIN = ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多