我有一個返回數組的挑戰。對於def won?(board)
方法,我試圖在滿足if條件時返回0索引位置[0,1,2]中的數組。所以我說:return [0,1,2]在Ruby方法中返回數組的挑戰
但是!當我在編輯器中運行的代碼,我得到這個錯誤信息:
returns an array of matching indexes for a top row win (FAILED - 3)
和測試提供了這個錯誤:
Failure/Error: expect(won?(board)).to match_array([0,1,2])
NoMethodError:
undefined method `won?' for #<RSpec::ExampleGroups::LibGameStatusRb::Won:0x007f82d3b26508>
# ./spec/game_status_spec.rb:35:in `block (3 levels) in <top (required)>'
我提供了下面的代碼,與陣列一起。我嘗試過使用put或者只是將數組包含在內而不工作。你可能有任何建議,非常感謝!
WIN_COMBINATIONS = [
[0,1,2],
[0,3,6],
[0,4,8],
[1,4,7],
[2,5,8],
[3,4,5],
[6,7,8],
[6,4,2]
]
top_row_win = WIN_COMBINATIONS[0]
middle_row_win = WIN_COMBINATIONS[5]
bottom_row_win = WIN_COMBINATIONS[6]
left_column_win = WIN_COMBINATIONS[1]
middle_column_win = WIN_COMBINATIONS[3]
right_column_win = WIN_COMBINATIONS[4]
left_diagonal_win = WIN_COMBINATIONS[2]
right_diagonal_win = WIN_COMBINATIONS[7]
def won?(board)
if board[top_row_win[0]] == "X" && board[top_row_win[1]] == "X" && board[top_row_win[2]] == "X"
return [0,1,2]
else false
end
end
您打電話贏了?而不是贏 - 要麼改變你在測試中調用的方法,要麼改變代碼中的方法名稱。有些人不認爲這是對這個問題的答案,所以我把它作爲一個評論,並會避免指出未來 –
def won的基本錯誤?雖然不起作用。 –