2013-12-12 3 views
2

Я хочу подвести итог сумме заказов.Возврат ноль, когда разорвать блок блока впрыска

, но если order.gprade != nil, я немедленно закончу блок.

Но я получил значение

nil Это было не мое ожидание,

Как достичь своей цели?

Благодаря

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

ответ

12
points = orders.inject(0) do |sum, order | 
    break sum unless order.upgrade.nil?  
    sum += order.actual_amount || 0 
end 
+2

Из [Docs заявления прерывистого] (http://www.ruby-doc.org/core-2.0.0/doc/syntax/control_expressions_rdoc.html#label- break + Statement): * break принимает значение, которое поставляет результат выражения, которое оно «ломает» из * – Stefan

Смежные вопросы