如果'键'或'值'包含ruby中的值,选择散列元素
问题描述:
我想知道是否有一种方法来搜索键和包含值的哈希表。如果'键'或'值'包含ruby中的值,选择散列元素
目前我在做这样的:这里
#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
结果发现,包括机器人和输入的所有哈希元素;然后检查他们有哪些共同点。 只是不知道是否有一种方法我过来看了返回我会想:
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'来避免使用'!!'? –
@ sagarpandya82,当然!谢谢。将编辑。 –