如何初始化reduce并在Julia中使用累加器

如何初始化reduce并在Julia中使用累加器,julia,Julia,它在没有初始值的情况下工作: 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,

它在没有初始值的情况下工作:

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])
,但我想知道如何将它实现为带有累加器的reduce


julia版本1.1.1

reduce
init
参数是一个关键字参数:

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

谢谢至于累加器-您知道吗?是否可以保证它始终是第一个参数,并且列表将从第一个到最后一个顺序缩减?如果您想保证缩减的左关联性,可以使用
foldl
reduce
的关联性没有明确保证。请注意,
[]
属于可能影响性能的
Vector{Any}
类型。顺便说一句,为什么要使用累加器,而不是使用广播?@DNF,关于累加器,这似乎更像是一个“能做到吗?”的问题,而不是一个“应该做到吗?”的问题。OP甚至提到他可以用
map
来代替给定的例子。好吧,我通常也会提到“应该这样做”,即使海报没有要求这样做。