如果';键';或';价值';包含ruby中的值
我想知道是否有一种方法可以在哈希表中搜索包含值的键和值 目前我正在这样做:如果';键';或';价值';包含ruby中的值,ruby,methods,hash,Ruby,Methods,Hash,我想知道是否有一种方法可以在哈希表中搜索包含值的键和值 目前我正在这样做: #for this example say bot,input = "rock","scissors" hash = Hash['rock', 'scissors', 'scissors', 'paper', 'paper', 'rock'] outcome = ([hash.rassoc(bot), hash.assoc(bot)] & [hash.rassoc(input),hash.assoc
#for this example say
bot,input = "rock","scissors"
hash = Hash['rock', 'scissors', 'scissors', 'paper', 'paper', 'rock']
outcome = ([hash.rassoc(bot), hash.assoc(bot)] & [hash.rassoc(input),hash.assoc(input)]).flatten
这里的结果查找包含bot和input的所有哈希元素;然后检查他们的共同点。
我只是想知道是否有一种方法我过多地寻找来返回我想要的:
outcome = [hash.rassoc(bot), hash.assoc(bot)]
这就是你要找的吗
winners = { "rock"=>"scissors", "scissors"=>"paper", "paper"=>"rock" }
def outcome(winners, player, opponent)
return :win if winners.any? { |pair| pair == [player, opponent] }
return :lose if winners.any? { |pair| pair == [opponent, player] }
return :tie
end
outcome winners, "rock", "scissors" #=> :win
outcome winners, "scissors", "rock" #=> :lose
outcome winners, "rock", "rock" #=> :tie
建议:使用
any?
而不是find
,以避免使用代码>?