0
Ниже приведен код, который я представил для алгоритма суммирования массива. В этом случае мне пришлось использовать .each, но я чувствую, что есть лучший способ сделать это ...Лучший способ решить сумму массива с .each
numbers = [5, 17, 2, 899, 101, 4, 66, 123, 98]
sum = 0
index = 0
numbers.each do |number|
sum = sum + numbers[index]
index += 1
end
puts sum
Нормальный путь 'numbers.reduce (+)', но так как вы должны использовать 'each', я хотел бы предложить' numbers.each.reduce (+) # => 1315'. –
Я должен уточнить. 'numbers.reduce (: +)' производит тот же результат, что и 'numbers.reduce {| total, n | total + n} '. См. [Enumerable # reduce] (http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-reduce) (также известный как 'inject'). Было бы преждевременно в вашем рубиновом образовании объяснить, почему это так. Пока, подумайте о первом как коротком способе написания позже. Приемник 'reduce' может быть массивом (' numbers') или перечислителем ('numbers.each'). Так как последний порождает элементы первого, либо можно использовать. Попробуйте запустить 'e = numbers.each' и' e.to_a' в IRB. –