“和”是什么意思在下面的ruby语法中是什么意思?

“和”是什么意思在下面的ruby语法中是什么意思?,ruby,syntax,operators,Ruby,Syntax,Operators,在下面的ruby示例中,&代表什么?它是沿着+=的路线循环的吗 payments.sum(&:price) 谢谢 Rich我几乎不是Ruby专家,但我记得,它的含义与C/C++中的基本相同,在C/C++中,它是运算符的地址。换句话说,方法price本身作为参数传递给sum,而不是调用price,结果传递给sum&:price是“对集合的每个成员使用#price方法”的缩写 当一元“&”作为参数传递到方法中时,告诉Ruby“将其转换为进程”。符号上的#to#proc方法将#将该符号发送给

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

payments.sum(&:price)
谢谢


Rich

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

&:price是“对集合的每个成员使用#price方法”的缩写


当一元“&”作为参数传递到方法中时,告诉Ruby“将其转换为进程”。符号上的#to#proc方法将#将该符号发送给接收对象,接收对象以该名称调用相应的方法。

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

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


阅读更多有关.< /P>这是一个出人意料的好猜测,但不是完全正确。马特的答案是正确的。在引擎盖下的情况下,不是很正确,但是从用户的角度来看,结果是非常相似的。对于熟悉C或C++的人来说,这是一个合理的心智模型。“具体来说,它相当于

payments.sum{| payment | payment.price}
。如果我错了,请纠正我,但是
&
与“集合的每个成员”都没有任何关系。”。这是
sum
方法的一个属性。谢谢,这正是我想要的。谢谢,你答案中的第二篇文章非常有用。可能重复