The first "nicer" thing I can think of is:
journey.map { |s| compute(s) }.reduce(0) do |sum, fee|
break nil unless fee
sum + fee
end
Update: This returns nil
as soon as compute
returns nil
:
journey.reduce(0) do |sum, segment|
fee = compute(segment)
break nil unless fee
sum + fee
end