我正在尝试学习注入方法。我以为我会在计算时打印元素。但是在我评论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)
答案 0 :(得分:4)
解决方案:
list.inject(0) do |a, b|
print b
a + b
end
#=> 12345678910=> 55
说明:
inject
返回上一次迭代(a
)的累积值。
当您打印b
时,它是迭代的返回值,因此a
是nil
。要解决它,请移动上面的print
,以便a
仍然是迭代的返回值。