tst*_*tst 4 arrays tuples julia
我想有一系列元组.但似乎我不能附加一个元组.这是一个引发错误的最小代码示例.
julia> a = [(1,1),(2,2)]
2-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(2, 2)
julia> append!(a, (3,3) )
ERROR: MethodError: Cannot `convert` an object of type Int64 to an object of type Tuple{Int64,Int64}
This may have arisen from a call to the constructor Tuple{Int64,Int64}(...),
since type constructors fall back to convert methods.
Stacktrace:
[1] _append!(::Array{Tuple{Int64,Int64},1}, ::Base.HasLength, ::Tuple{Int64,Int64}) at ./array.jl:644
[2] append!(::Array{Tuple{Int64,Int64},1}, ::Tuple{Int64,Int64}) at ./array.jl:637
Run Code Online (Sandbox Code Playgroud)
我的语法有问题吗?我不明白为什么它抱怨它必须将数字转换为元组.是什么赋予了?
append!将另一个集合的所有单个元素添加到现有对象.Julia在这里引发了错误,因为它(3, 3)是两个整数的集合,它无法将类型的单个整数Int64与数组的Tuple{Int64,Int64}类型进行协调.
您需要的方法是push!,将一个或多个单独的项添加到现有集合中:
julia> push!(a, (3, 3))
3-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(2, 2)
(3, 3)
Run Code Online (Sandbox Code Playgroud)
单个项目元组(3, 3)已成功推送到阵列上a.
要完成相同的任务append!,元组需要包含在某种类型的集合中,例如数组:
julia> append!(a, [(4, 4)])
4-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(2, 2)
(3, 3)
(4, 4)
Run Code Online (Sandbox Code Playgroud)
这在此处的集合页面上有记录.