Ruby map方法语法问题

可能重复:
map(&:name)在Ruby中意味着什么?

我正在观看railscasts更多的虚拟属性剧集 。 在那一集中,有一次,ryan使用了我无法理解的地图方法语法,有人可以解释一下吗?

tags.map(&:name).join(' ') 

tags是Tag Model的一个对象,它具有name属性。 我能够理解这个的含义(我想是:))。 所有标记对象的name属性都作为数组检索并基于”连接。 但与&:name的交易是什么

谢谢

&Symbol#to_proc的快捷方式,它将您传递给它的符号转换为对象上的方法名称。 所以&:name转换为{ |reciever| receiever.name } { |reciever| receiever.name }然后传递给map方法。

这是一种很好的方法,可以使您的代码更简洁,并避免在整个地方拥有大量的块。

它是tags.map(:name.to_proc)的简写,就像调用tags.map{|tag| tag.name } tags.map{|tag| tag.name }只是将所有标记名称收集到一个数组中。