Ruby中的“&:name”是什么意思
我在一些人发布的示例Ruby代码中看到了它。 它是这样的:
a.sort_by(&:name)
其中a
是数组或ActiveRecord对象,并且:name
是其中一个属性。
我从未见过&:name
和Ruby的Symbol类文档没有说明它。 可能真的很简单。 🙂
Unary Ampersand是函数/ block / lambda的地址
在这种情况下,这意味着.sort_by
函数将使用每个元素的名为name
的函数进行比较
主要用于其他东西,如下所示:
[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 }