這是一個岩石紙剪刀遊戲。 game.class表示這是一個數組。我希望找到贏得比賽的人的名字(這裏是Player2)。如何從數組中構建散列
遊戲= [[ 「PLAYER1」, 「P」],[ 「Player2」, 「S」]]
,想到的方法是使用名稱值返回一個散列分開。然後通過值來搜索該散列以獲取玩家名稱。
h = Hash.new(0)
game.collect do |f|
h[f] = f[1]
end
h
#=> {["Player1", "P"]=>"P", ["Player2", "S"]=>"S"}
這是接近但沒有雪茄。我想
{"Player1" => "P", "Player2" => "S"}
我用注射方法再次嘗試:
game.flatten.inject({}) do |player, tactic|
player[tactic] = tactic
player
end
#=> {"Player1"=>"Player1", "P"=>"P", "Player2"=>"Player2", "S"=>"S"}
這不起作用:
Hash[game.map {|i| [i(0), i(1)] }]
#=> NoMethodError: undefined method `i' for main:Object
我將不勝感激一些指針的東西,會幫助我瞭解。
相關:http://bugs.ruby-lang.org/issues/666 – tokland