2017-04-02 32 views
1

我想學習注入法。我想我會在計算時打印元素。但在下面的代碼中,當我評論print b聲明時,它工作正常。但是當我取消註釋時,會發生錯誤。那是什麼意思?錯誤發生在a+b聲明中,錯誤中提到了line number 4注入法內部錯誤

list = *(1..10) 

list.inject(0) do |a, b| 
    a + b 
    print b 
end 

錯誤:

undefined method `+' for nil:NilClass (NoMethodError) 
+2

'inject'也適用於範圍:'(1..10).inject'等等。 – steenslag

回答

4

解決方案:

list.inject(0) do |a, b| 
    print b 
    a + b 
end 
#=> 12345678910=> 55 

說明:

inject返回來自前一次迭代(a)的累積值。

當您打印b時,它是迭代的返回值,因此anil。要解決它,請移動上面的print,以便a仍然是迭代的返回值。