9
我經常發現自己在Ruby中構建查找表,通常用於緩存一些昂貴的計算或構建一些我傳遞給視圖的東西。我認爲這必須有一個簡短易讀的成語,但我們無法想到其中一個。例如,假設我要開始Ruby數組到索引散列?
[65, 66, 67, ...]
,並最終與
{65 => "A", 66 => "B", 67 => "C", ...}
的未挺,漂亮,足夠的成語,我們能想到的包括:
array = (65..90).to_a
array.inject({}) {|hash, key| hash[key]=key.chr; hash}
{}.tap {|hash| array.each {|key| hash[key] = key.chr}}
Hash[array.zip(array.map{|key| key.chr})]
但所有這些都有點痛苦:難以閱讀,容易混淆,意圖不明確。當然,Ruby(或某些Rails助手)對此有一些不錯的魔力?
哇。我從來不會猜到一堆數組將會以這種方式被解釋。我預料它會變成{[65,「A」] => [66,「B」],[67,「C」] => [68,「D」],...}。這讓我感到害怕,但我仍然會使用它。謝謝! – 2012-02-28 01:52:57
@William:你可以使用['Hash。[]'](http://apidock.com/ruby/Hash/%5B%5D/class)兩種形式:Hash [key,value,key,value, ...]或'Hash [[[key,value],[key,value],...]]',內部數組表示任何可枚舉的yield/key對。請記住,在Ruby中,有不止一個要做到這一點:P另外,我使用方面增加了另一個建議。 – 2012-02-28 01:56:05
果然。在那裏的文檔。謝謝!我一定會檢查出Facets;看起來很棒。 – 2012-02-28 02:01:15