【发布时间】:2014-08-12 10:21:42
【问题描述】:
因此,假设我们有以下三个methods 检查网格以确定是否有获胜者,如果有则返回true。
def win_diagonal?
# Code here to check for diagonal win.
end
def win_horizontal?
# Code here to check for horizontal win.
end
def win_vertical?
# Code here to check for vertical win.
end
我想将每个方法的返回值推送到Array,而不是直接使用方法名称。这可能吗?
def game_status
check_wins = [win_vertical?, win_diagonal?, win_horizontal?]
if check_wins.uniq.length != 1 # When we don't have only false returns from methods
return :game_over
end
end
【问题讨论】:
-
你的问题有点不清楚。您只是在问您发布的代码是否有效?我建议尝试一下,但我很确定它会。你在问别的吗?
-
检查
if win_vertical? || win_diagonal? || win_horizontal?是一种让您的代码更短更清晰的方法——这样您就不需要数组或不太直接的测试。 -
上面的代码无法正常工作,无法实现我想要实现的目标。此外,尝试您发布的代码“
if win_vertical? || win_diagonal? || win_horizontal?”将始终返回:game_over示例:irb(main):005:0> puts "hi" if 1 || 2 || 3 == 5 hi -
试试
if false || false || true——假设你的方法返回true或false。你不需要==任何东西。
标签: ruby arrays function methods