在以下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