“&”在以下ruby语法中的含义是什么?

时间:2011-05-10 15:03:53

标签: ruby syntax operators

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

payments.sum(&:price)

谢谢,

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

来自Programming Ruby: The Pragmatic Programmers' Guide

详细了解in this article

答案 3 :(得分:-1)

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