Possible Duplicate:
What does map(&:name) mean in Ruby?
Post.all.map(&:id)
会回来的
=> [1, 2, 3, 4, 5, 6, 7, ................]
map(&:id)
是什么意思?尤其是&
.
Possible Duplicate:
What does map(&:name) mean in Ruby?
Post.all.map(&:id)
会回来的
=> [1, 2, 3, 4, 5, 6, 7, ................]
map(&:id)
是什么意思?尤其是&
.
&
符号用于表示以下参数应被视为给定给该方法的块.这意味着,如果它还不是Proc对象,将调用其to_proc
方法将其转换为Proc对象.
因此,你的例子的结果是
Post.all.map(&:id.to_proc)
这反过来相当于
Post.all.map { |x| x.id }
因此,它迭代Post.all
返回的集合,并用对每个项调用的id
方法的结果构建一个array.
这是因为Symbol#to_proc
创建了一个进程,该进程接受一个对象,并使用其上的符号名调用该方法.它主要是为了方便,节省一些打字时间.