【发布时间】:2019-03-22 02:25:47
【问题描述】:
这可以重构为布尔值吗? board 是一个数组,move 是一个索引。如果board[move] 是" "、"" 或nil,则position_taken?(board, move) 应该返回false,但如果board[move] 是"X" 或"O",则返回true。
def position_taken?(board, move)
if board[move] == " "
false
elsif board[move] == ""
false
elsif board[move] == nil
false
else
true
end
end
【问题讨论】:
-
board[move]是否保证等于" "、""、nil、"X"或"O"?如果是这样,你可以写!board[move].to_s.strip.empty?,但这是我不推荐的hack(它之所以有效,是因为nil.to_s #=> "")。如果board[move]等于其他值,返回什么? -
是的。
board[move]保证等于" "、""、nil、"X"或"O",并且没有其他值。 -
有了积极的支持,您可以使用
board[move].present?
标签: ruby if-statement boolean refactoring