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