julia - 避免在 Julia 中广播争论

标签 julia

考虑这个非常现实问题的玩具版本:

julia> foo(a,b) = sum(a) + b
foo (generic function with 1 method)

julia> foo.([1,2],[3,4,5])
ERROR: DimensionMismatch("arrays could not be broadcast to a common size")
Stacktrace:
 [1] _bcs1(::Base.OneTo{Int64}, ::Base.OneTo{Int64}) at ./broadcast.jl:70
 [2] _bcs at ./broadcast.jl:63 [inlined]
 [3] broadcast_shape at ./broadcast.jl:57 [inlined] (repeats 2 times)
 [4] broadcast_indices at ./broadcast.jl:53 [inlined]
 [5] broadcast_c at ./broadcast.jl:311 [inlined]
 [6] broadcast(::Function, ::Array{Int64,1}, ::Array{Int64,1}) at ./broadcast.jl:434

我希望上面的代码返回 [6,7,8] ,但这不会发生,因为 broadcast点所暗示的尝试匹配长度为 2 和 3 的输入向量,并将标量输入 foo 的两个参数中.我怎样才能避免这种情况?

最佳答案

只需将您不想广播的参数包装成 Ref :

julia> foo.(Ref([1,2]),[3,4,5])
3-element Array{Int64,1}:
 6
 7
 8

关于julia - 避免在 Julia 中广播争论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346301/

相关文章:

function - Julia 中有类似 python __dict__ 的东西吗?

machine-learning - 对 julia 中的匿名函数感到困惑

arrays - 如何在 Julia 中查找数组中多个元素的位置

julia - 带有稀疏矩阵的 JuMP?

inheritance - 如何调用父类(super class)型方法?

python - Julia 中的数字分隔符

r - Julia 调用中的 Threads.nthreads

sorting - 使用 Julia 将项目插入到排序列表中(有和没有重复)

performance - 我怎样才能加速这个 Julia 代码?

julia - 静态数组和统计库