.不会迭代嵌套数组

Mik*_*eft 0 ruby each

出于某种原因,这不是迭代集合.在那里投掷撬显示只有第一个索引被查看.[0,1,2]我确定我只是累了,它很小,但我在这里画了一个黑色,

WIN_COMBINATIONS = [
  [0, 1, 2],
  [3, 4, 5],
  [6, 7, 8],
  [0, 3, 6],
  [1, 4, 7],
  [2, 5, 8],
  [0, 4, 8],
  [2, 4, 6]
]

def won?(board)
  WIN_COMBINATIONS.each do |combo|
    if board[combo[0]] != " " && board[combo[0]] == board[combo[1]] && board[combo[0]] == board[combo[2]]
      return combo
    else
      return false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Ale*_*kin 5

def won?(board)
  WIN_COMBINATIONS.any? do |combo|
    board[combo[0]] != " " &&
      board[combo[0]] == board[combo[1]] &&
      board[combo[0]] == board[combo[2]]
  end
end
Run Code Online (Sandbox Code Playgroud)

或者,更简洁Array#values_at:

def won?(board)
  WIN_COMBINATIONS.any? do |combo|
    [%w|X| * 3, %w|O| * 3].include? board.values_at(*combo)
  end
end
Run Code Online (Sandbox Code Playgroud)