有没有办法将方法的输出存储在Ruby中的变量中?例如,如果我想将display_results的返回值存储在要由win_counter评估的变量中,那可能吗?我希望每次display_results获胜时win_counter都会递增。
win_combos = [
['rock', 'scissors'],
['paper', 'rock'],
['scissors', 'paper'],
['rock', 'lizard'],
['lizard', 'spock'],
['spock', 'scissors'],
['scissors', 'lizard'],
['lizard', 'paper'],
['paper', 'spock'],
['spock', 'rock']
]
scores = { player: 0, computer: 0 }
def display_results(first, second, combos = [])
combos.each do |combo|
if combo == [first, second]
puts "Player won!"
break
elsif combo == [second, first]
puts "Computer won!"
break
end
end
if first == second
puts "It's a tie!"
end
end
def win_counter(player, computer, scores)
if display_results(player, computer)
scores[:player] = scores[:player] + 1
elsif display_results(computer, player)
scores[:computer] = scores[:computer] + 1
end
puts "players wins: #{scores[:player]}; computer wins: #{scores[:computer]}"
end
display_results('spock', 'rock', win_combos)
win_counter('spock', 'rock', scores)
答案 0 :(得分:0)
您需要做的就是设置一个等于方法调用的变量。你可以使用:
charAt()
然而,将打赢胜利者的逻辑与实际游戏的逻辑分开可能更有用。在红宝石方法中,返回布尔值的风格是用''即空? display_results应该只显示游戏的结果,你不应该使用if语句。