2015-02-11 82 views
1

我看到了它的一些示例Ruby代码有人张贴英寸这是这样的:什么是“:名称”是指在Ruby中

a.sort_by(&:name) 

其中a是一个数组或ActiveRecord对象和:name是属性之一。

我从来没有见过&:name和Ruby的Symbol类文件说一无所知。可能很简单。 :)

回答

3

一元Ampersand是函数/块/λ

在这种情况下地址,这意味着该.sort_by函数将使用名为name每个a的元素的功能进行比较

主要是它使用别的东西,像这样:

[1,2,3].map{ |x| x.to_s } # ['1','2','3'] 

这可以缩短为:

[1,2,3].map(&:to_s) 

所以,你的情况,a.sort_by(&:name)是一个速记:

a.sort_by{ |x| x.name }