在以下ruby语法中,`&`是什么意思?

在下面的ruby示例中, &表示什么? 它是否在循环中沿+=线?

 payments.sum(&:price) 

谢谢,

丰富

&:price是“在集合的每个成员上使用#price方法”的简写。

一元“&”,当作为参数传递给方法时告诉Ruby“把它变成一个Proc”。 符号上的#to_proc方法将#send该符号发送到接收对象,该对象通过该名称调用相应的方法。

不,它与+=无关。 当在方法调用中使用时,一元&运算符将给定的Proc对象转换为块。 如果操作数不是Proc(在这种情况下它是一个符号),则首先调用to_proc ,然后将生成的Proc对象转换为块。

“如果方法的最后一个参数前面有一个&符号,Ruby假定它是一个Proc对象。它将它从参数列表中删除,将Proc对象转换为一个块,并将其与方法相关联。”

来自编程Ruby:实用程序员指南

在本文中阅读更多相关信息。

我不是Ruby专家,但我记得,它与C / C ++中的含义大致相同,它是地址运算符。 换句话说,方法price 本身作为参数传递给sum ,而不是调用price ,结果传递给sum