Ruby map方法语法问题

fel*_*lix 4 ruby ruby-on-rails railscasts ruby-on-rails-3

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

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

tags.map(&:name).join(' ')
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Jak*_*mpl 9

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

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


idl*_*ers 6

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


归档时间:

查看次数:

7190 次

最近记录:

14 年,11 月 前