【发布时间】:2021-04-27 21:30:14
【问题描述】:
我可以用Array{Tuple{Int, Int}}(undef, 10) 初始化一个元组数组。
但是,我不能使它适用于命名元组。有谁知道我该怎么做?
提前致谢!
【问题讨论】:
标签: arrays julia namedtuple
我可以用Array{Tuple{Int, Int}}(undef, 10) 初始化一个元组数组。
但是,我不能使它适用于命名元组。有谁知道我该怎么做?
提前致谢!
【问题讨论】:
标签: arrays julia namedtuple
这就是这样做的方法(我知道您想要一个未初始化的 NamedTuples 数组具有具体类型):
julia> Array{NamedTuple{(:a, :b), Tuple{Int64, Float64}}}(undef, 10)
10-element Vector{NamedTuple{(:a, :b), Tuple{Int64, Float64}}}:
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 2.156699073e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 2.15670018e-315)
(a = 257472272, b = 1.272082044e-315)
(a = 257472272, b = 1.272082044e-315)
julia> Array{NamedTuple{(:a, :b), Tuple{Int64, String}}}(undef, 10)
10-element Vector{NamedTuple{(:a, :b), Tuple{Int64, String}}}:
#undef
#undef
#undef
#undef
#undef
#undef
#undef
#undef
#undef
#undef
【讨论】:
Vector而不是Array吗?
Array 采用第二个参数来确定输出的维数,请参见 boot.jl 中第 462 行附近的代码。我使用 Array 作为问题使用 Array 并没有专门询问向量,而是询问数组一般。
typeof:Array{typeof((a=1,b=2))}(undef,10)
Vector{T} 只是Array{T,1} 的别名。数组的维数是从构造函数的第二个或可变参数中推断出来的;它可以是NTuple{Integer,N} 或Varargs{Integer,N},在这两种情况下,数组的维数都是N。所以10 和(10,) 作为第二个参数都创建一个一维数组,10, 11(可变参数)和(10, 11)(二元组)都将创建一个二维数组,等等。