class Array
def sum(start = 0)
inject(start, &:+)
end
end
Пожалуйста, объясните мне использование этого кода. Тестовый корпус с входом и выходом будет полезен. Спасибо.Что делает этот код Ruby с использованием метода инъекций?
class Array
def sum(start = 0)
inject(start, &:+)
end
end
Пожалуйста, объясните мне использование этого кода. Тестовый корпус с входом и выходом будет полезен. Спасибо.Что делает этот код Ruby с использованием метода инъекций?
Он суммирует все элементы, которые хранятся внутри массива. start
- значение, к которому добавлена сумма. например, для массива foo = [1, 4]; foo.inject(10, &:+)
вернет 15 (10 + 1 + 4). &:+
сообщает, какую операцию следует вызывать для каждого элемента массива; это так же, как вы могли бы дать свой собственный обратный вызов, например
foo.inject(10) do |current_sum, current_element|
current_sum = current_sum + current_element #can be written current_sum += current_element
current_sum
end
Получил это. Благодарю. – shreyanshd
FWIW 'current_sum + current_element' - это все, что необходимо в теле блока. –
Вы спрашиваете кого-то, чтобы сделать свою домашнюю работу для вас? – elc
Нет. Я читаю книгу, где я видел этот фрагмент кода. Автор не дал никакого объяснения кода. Отсюда вопрос! – shreyanshd
Вы прочитали [документацию для инъекций] (http://ruby-doc.org/core-2.2.3/Enumerable.html#method-i-inject) и попробовали код? – mikej