如何 `fill` 一个 array 的一部分?

我有一个 array

julia> a = ones(2, 3)
2×3 Array{Float64,2}:
 1.0  1.0  1.0
 1.0  1.0  1.0

现在想把第一行全部填成 3.0,

julia> fill!(a[1,:],3)
3-element Array{Float64,1}:
 3.0
 3.0
 3.0

但是 a 仍未被修改。这是因为 fill! 的源码只是返回了一个同样 shape 的 array:

function fill!(A::AbstractArray{T}, x) where T
    xT = convert(T, x)
    for I in eachindex(A)
        @inbounds A[I] = xT
    end
    A
end

我该怎么做?

a[1, :] .= 3
fill!(view(a, 1, :), 3)
2 个赞