Как инициализировать сокращение и использовать аккумулятор в Юлии - PullRequest
3 голосов
/ 11 июня 2019

Работает без начального значения:

reduce(+, [2 3 4])

Пробовал несколько способов указать начальное значение - ничего не работает

reduce(+, [2 3 4], 1)
reduce(+, 1, [2 3 4])

Также похоже, что можно использовать Reduceтолько с оператором 2 аргумента.Какую функцию следует использовать для уменьшения сбора с помощью пользовательских функций, которые принимают текущее значение и аккумулятор?Что-то вроде приведенного ниже кода?

reduce((accumulator, value) -> push!(accumulator, value^2), [1, 2, 3], [])
# => [1, 4, 9]

Этот пример может быть реализован как map(x -> x^2, [1, 2, 3]), но я хотел бы знать, как его реализовать с помощью аккумулятора.

julia version 1.10,1

1 Ответ

3 голосов
/ 12 июня 2019

Аргумент init для reduce является аргументом ключевого слова:

julia> reduce(+, [2 3 4], init = 1)
10

julia> reduce((accumulator, value) -> push!(accumulator, value^2), [1, 2, 3], init = [])
3-element Array{Any,1}:
 1
 4
 9
...