我有这样的代码
list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num它可以工作,我想知道没有inject前面的& (符号)是如何工作的。我想找人解释一下:+和&:+之间的区别。
发布于 2014-07-01 08:55:04
&:+被翻译成proc,而:+是符号。inject支持接收符号,这些符号在内部被转换为proc:
如果指定一个块,则为枚举中的每个元素传递一个累加器值(备注)和该元素。如果您指定了一个符号,那么集合中的每个元素都将被传递给备注的命名方法。在任何一种情况下,结果都会成为备忘录的新值。在迭代结束时,备注的最终值是该方法的返回值。
https://stackoverflow.com/questions/24506081
复制相似问题