【发布时间】:2013-06-16 20:58:23
【问题描述】:
我正在努力理解何时使用 & 符号将符号传递给表示方法的函数。例如,如果我想计算范围 1..10 的总和,我可以执行以下操作:
(1..10).inject(:+)
这最初让我相信,如果你想传递一个符号来定义一个在函数中“神奇地”使用的方法,你会将函数名作为符号传递。但是后来我在rails中看到了这样的东西:
total = Product.find(product_list).sum(&:price)
如果我理解正确,&:price 与调用 :price.to_proc 相同。我不明白上面的工作原理。
【问题讨论】:
-
这个和Enumerable#Inject无关,我只是拿来举例子。
-
:+的效果在您的示例中与inject紧密相关,而&:price则不然。 -
感谢您为我解决这个问题。
标签: ruby-on-rails ruby metaprogramming function-pointers symbols