2014-02-10 113 views
-1

countries = Hash[ "north" => "nl", "no", "uk" "south" => "sp", "fr", "it" "east" => "ru", "bl", "bg" ]紅寶石多哈希隨機值

我怎樣才能得到一個隨機值對每個元素(北,南,東)?

非常感謝你

+3

雖然你'國家'哈希不是一個合適的哈希語法。 –

+0

請注意'v.sample'與'v [rand(v.size)]'相同。 –

回答

3

下面是使用Array#sample方式:

countries = {"north" => ["nl", "no", "uk"], "south" => ["sp", "fr", "it"], "east" => ["ru", "bl", "bg"] } 
countries.map { |_,v| v.sample } # => ["nl", "it", "bg"] 
countries.map { |_,v| v.sample } # => ["uk", "it", "bg"] 
+1

一個好的做法是使用'| _,v |'來避免創建一個未使用的局部變量。 –

+1

@MarkThomas是的,首先我做了'| k,v |',之後你的句子進入了我的大腦,所以我刪除了'k',並將它作爲'| _,v |'。感謝您的審查。 –

+0

好的,謝謝! countries.map {| _,v | v.sample} .each do | variable | puts變量 結束 如何爲每個循環打印每個元素(北,南,東)? 即。放置「{#...}#{變量}」 – user476918

3

替代奧雅納的答案。

countries = {"north" => ["nl", "no", "uk"], "south" => ["sp", "fr", "it"], "east" => ["ru", "bl", "bg"]} 
countries.values.map(&:sample)