【发布时间】:2019-12-04 00:04:19
【问题描述】:
我正在研究一种返回 false 或数组的方法。当我在另一个方法中调用此数组并尝试将其分配给一个变量时,我希望该变量持有 false 或返回的数组。
发生的情况是,当我将方法的结果分配给变量时,它只会导致 true 或 false 而不是 false 或数组
我在被调用的方法中使用了 pry 方法来确定要返回的内容。我已经确认将返回一个数组,然后通过额外的撬动确定该变量仅在返回数组时设置为 true
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)
#for the purpose of this study, winner(board) returns nil or "X" or "O"
result = winner(board)
if result == nil
#if the result of winner is null, return false
return false
end
#return the array at location 0
return WIN_COMBINATIONS[0]
end
def play(board)
#i'm attempting to assign the return of the won? method to result
result = won?(board)
#when result is evaluated, when an array is being returned, result becomes true or false,
#rather than what I'd expect as false or an array
end
【问题讨论】:
-
该代码不是惯用的 ruby,但它可以工作(
result将被分配给一个数组。)在其他地方存在一个诱发问题。请发布所有代码(包括如何检查它是一个数组。) -
@AlekseiMatiushkin 由于我是 ruby 的新手,我对您的“非常不习惯”的说法很感兴趣。现在是我学习应该如何编写它的时候了 :) 为了检查我的代码,我在 win 中的 return 语句之前使用了 binding.pry?并询问 WIN_COMBINATIONS[0] 是什么。另一个 binding.pry 放置在方法 play 中的结果分配之后,在那里检查结果
-
看起来代码应该可以工作,但不知道
#winner在做什么,我无法判断。顺便说一句,您可以缩短方法并返回:winner(board).nil? ? false : WIN_COMBINATIONS.first -
@HP_hovercraft #winner 返回 nil、“X”或“O”。欣赏编码技巧;)
-
也许
#winner方法在任何状态下都不会返回 nil。您可以对其进行单元测试以确保它正在这样做?