在下面的ruby示例中,&
表示什么?它是否在循环中的+=
行?
payments.sum(&:price)
谢谢,
富
答案 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 }}