1
不能使用可枚举#地图从每个元素查找相同值的使用& 散列的数组:METHOD_NAME快捷:将此#to_proc方法添加到字符串以便能够映射Ruby哈希值是否安全?
# INVALID:
[{a:'bar', b:'world'}, {a:'baz', b:'boston'}].map &:[:a]
但是你可以通过添加#to_proc方法解决这个问题字符串。您可以编写这个新的#to_proc方法,以便您使用 向枚举器传递&“键”以通过键查找值。
res = [{a:'bar', b:'world'}, {a:'baz', b:'boston'}].map &":a"
puts res.inspect
#=> ["bar", "baz"]
比较你必须,否则写什么:
res = [{a:'bar', b:'world'}, {a:'baz', b:'boston'}].map {|x| x[:a]}
这里是你将如何修补String类来完成这项工作:
class String
def to_proc
->(x) { x.send :[], (self[0] == ':' ? self[1..-1].to_sym : self) }
end
end
请注意,这 只使用字符串或符号键进行哈希运算。
我的问题:这是安全的,只要良好的Ruby实践去做就行了吗?它是 一个相当全球性的变化,但我不知道这可能有任何副作用,它可以使我的代码在很多地方更简洁。
'{| x | x [:a]}':[恐怖,恐怖](http://www.youtube.com/watch?v=aNUr__-VZeQ)。 *简明*和*短*是不同含义的词。 – 2012-01-13 23:20:22
你是否也会说{| x | x.a}也不错,而且带走&:a不会有什么区别? – dan 2012-01-13 23:31:37
我觉得@mu是在说“脸颊上的舌头”。 – 2012-01-14 00:07:22