当打破注射块时,返回零

new*_*ike 4 ruby

我想总结订单金额.

但如果order.upgrade != nil我立即结束这个块.

但我得到了nil价值.

那不是我的期望.

如何实现我的目标?

谢谢

points = orders.inject(0) do |sum, order |
  break if order.upgrade != nil      
  sum += order.actual_amount if order.actual_amount
end
Run Code Online (Sandbox Code Playgroud)

Bro*_*tse 16

points = orders.inject(0) do |sum, order |
  break sum unless order.upgrade.nil?      
  sum += order.actual_amount || 0
end
Run Code Online (Sandbox Code Playgroud)

  • 来自[break statement docs](http://www.ruby-doc.org/core-2.0.0/doc/syntax/control_expressions_rdoc.html#label-break+Statement):*break接受一个提供结果的值表达它正在"打破"* (4认同)