注入方法内部出错

时间:2017-04-02 20:28:10

标签: ruby

我正在尝试学习注入方法。我以为我会在计算时打印元素。但是在我评论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)

1 个答案:

答案 0 :(得分:4)

解决方案:

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

说明:

inject返回上一次迭代(a)的累积值。

当您打印b时,它是迭代的返回值,因此anil。要解决它,请移动上面的print,以便a仍然是迭代的返回值。