无法插入! (但推!作品)

问题描述:

更新:糟糕,正如下面(非常客气地)@ rickhg12hs指出的,我只是阅读错误的手册。 insert!完全有效。无法插入! (但推!作品)

在Julia中,push!适用于许多不同类型的列表,但insert!不适用。

例如,考虑类型ASCIIString的数组:

x = ["a", "b"] 
push!(x, "c") 

结果x = ["a", "b", "c"]。但是:

x = ["a", "b"] 
insert!(x, "c", 3) 

结果:

ERROR: `insert!` has no method matching insert!(::Array{ASCIIString,1}, ::ASCIIString, ::Int64) 

鉴于此,怎么能插入ASCIIString成一个Array{ASCIIString, 1}的任意位置?

简单地重新分配整个阵列是最好的选择吗?例如:

x = [x[1:insertIndex-1], itemToInsert, x[insertIndex:end]] 
+0

'Base.insert!(collection,index,item)'是签名。 – jverzani 2014-09-05 11:53:24

insert!对于您尝试的操作有不同的参数顺序。

julia> insert! |> methods 
# 2 methods for generic function "insert!": 
insert!{T}(a::Array{T,1},i::Integer,item) at array.jl:540 
insert!(B::BitArray{1},i::Integer,item) at bitarray.jl:595 

这里是你如何做到这一点。

julia> x = ["a", "b"] 
2-element Array{ASCIIString,1}: 
"a" 
"b" 

julia> insert!(x, 3, "c") 
3-element Array{ASCIIString,1}: 
"a" 
"b" 
"c" 
+1

是的,你是对的。这有点令人尴尬。不知道我是如何塞满的。谢谢。 – 2014-09-06 00:45:54