5
我經常將預配置的lambda插入到像'map','select'等可枚舉方法中。但是'inject'的行爲似乎有所不同。 例如與瞭解在Ruby中使用lambda時注入的行爲
mult4 = lambda {|item| item * 4 }
然後
(5..10).map &mult4
給我
[20, 24, 28, 32, 36, 40]
但是,如果我做一個2參數拉姆達與像這樣的注射使用,
multL = lambda {|product, n| product * n }
我想能夠說
(5..10).inject(2) &multL
因爲「注入」的初始值, 可選單參數,但也練就了我......
irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
from (irb):27:in `inject'
from (irb):27
但是,如果我的東西了「& multL」成秒參數注入,然後它的工作。
irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
我的問題是「爲什麼這個工作,而不是以前的嘗試?」