1
我有这样的代码之间的区别:+和:+
list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num
它的工作原理,我想知道如何inject
作品,未经&
(符号)在:+
的前面。我要求某人解释:+
和&:+
之间的区别。
我有这样的代码之间的区别:+和:+
list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num
它的工作原理,我想知道如何inject
作品,未经&
(符号)在:+
的前面。我要求某人解释:+
和&:+
之间的区别。
&:+
被翻译成proc,而:+
是一个符号。 inject
支撑器接收符号,其在内部转换为PROC:
如果指定的块,然后在枚举每个元素块是 传递一个累加器值(备忘录)和元件。 如果您改为指定 符号,则集合中的每个元素将被传递到 备忘录的命名方法。无论哪种情况,结果都会成为备忘录的新值 。在迭代结束时,备忘录 的最终值是该方法的返回值。
其中一人戴着帽子? ...对不起,忍不住 – musefan
@musefan不,其中一个有头发。 – sawa