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