我在有人发布的一些示例Ruby代码中看到了它。就像这样:
a.sort_by(&:name)
其中a
是数组或ActiveRecord对象,并且:name
是属性之一。
我从未见过&:name
,Ruby的Symbol类文档对此一无所获。可能真的很简单。:)
一元符号是函数/块/ lambda的地址
在这种情况下,这意味着该.sort_by
函数将使用每个a
名为的元素的函数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 }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句