我认为您无法使用
append!
实现此目标,因为在内部,
append!
使用了
unsafe_copy!
,正如文档所说:
此函数的unsafe前缀表示不对指针dest和src执行任何验证以确保它们是有效的。使用不当可能会破坏或使程序崩溃,就像C一样。
在下面的示例中,可以看到这种行为,即使出现错误消息
InexactError
,
a
向量的内容也变得无效。
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> append!(a,[3.14, 6.66, 1.61])
ERROR: InexactError()
in copy! at abstractarray.jl:344
in append! at array.jl:447
julia> a
6-element Array{Int64,1}:
1
2
3
9223372036854775807
18
-1
最安全的方法是使用
vcat
进行连接,如下所示:
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> a=vcat(a, [3.14, 6.66, 1.61])
6-element Array{Float64,1}:
1.0
2.0
3.0
3.14
6.66
1.61
或者:
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> a=[a; [dec(3), "6.66", "test"]]
6-element Array{Any,1}:
1
2
3
"3"
"6.66"
"test"
请注意,在连接后,数组将晋升为新类型(分别为
Array{Float64,1}
和
Array{Any,1}
)。
更多信息:
转换和晋升
数组 - vcat