无法插入! (但推!作品)
问题描述:
更新:糟糕,正如下面(非常客气地)@ 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]]
答
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
'Base.insert!(collection,index,item)'是签名。 – jverzani 2014-09-05 11:53:24