Julia 朱莉娅:将索引设置为N倍
假设我有一个NTuple,有4个未初始化的Int64条目。如何分别设置每个索引的值? 我尝试了base的setindex函数,但没有成功。有什么想法吗Julia 朱莉娅:将索引设置为N倍,julia,Julia,假设我有一个NTuple,有4个未初始化的Int64条目。如何分别设置每个索引的值? 我尝试了base的setindex函数,但没有成功。有什么想法吗 T = NTuple{4,Int64} setindex(T,9,2) # set T(2) to 9 您可能是指NTuple{4,Int64}而不是NTuple{4,Int64} NTuple是表示具有单一类型元素的类型元组(不是实际值而是它们的类型;这里可能令人困惑的是,NTuple{4,Int64}在技术上也是一个可以绑定到变量的值,但鉴
T = NTuple{4,Int64}
setindex(T,9,2) # set T(2) to 9
您可能是指
NTuple{4,Int64}
而不是NTuple{4,Int64}
NTuple
是表示具有单一类型元素的类型元组(不是实际值而是它们的类型;这里可能令人困惑的是,NTuple{4,Int64}
在技术上也是一个可以绑定到变量的值,但鉴于您的问题,这可能不是您想要做的)
您可以通过查找帮助来检查这一点。在您的例子中,它表示长度为4的元组的类型和类型为Int64
的所有元素。例如,(1,2,3,4)
就是这样一个元组。您可以通过编写(1,2,3,4)isa NTuple{4,Int64}
来检查它,它将计算为true
现在如果你问为什么像(1,2,3,4)
这样的元组不支持setindex代码>原因是元组在Julia中是不可变的,请参见。这意味着您必须在构造元组时为元组的每个字段分配一个值,并且不能对其进行变异
如果你想要一个可变容器,你应该考虑使用向量而不是元组。例如:
julia> x = Vector{Int}(undef, 4)
4-element Array{Int64,1}:
0
0
0
0
julia> x[2] = 9
9
julia> x
4-element Array{Int64,1}:
0
9
0
0
您可能是指NTuple{4,Int64}
而不是NTuple{4,Int64}
NTuple
是表示具有单一类型元素的类型元组(不是实际值而是它们的类型;这里可能令人困惑的是,NTuple{4,Int64}
在技术上也是一个可以绑定到变量的值,但鉴于您的问题,这可能不是您想要做的)
您可以通过查找帮助来检查这一点。在您的例子中,它表示长度为4的元组的类型和类型为Int64
的所有元素。例如,(1,2,3,4)
就是这样一个元组。您可以通过编写(1,2,3,4)isa NTuple{4,Int64}
来检查它,它将计算为true
现在如果你问为什么像(1,2,3,4)
这样的元组不支持setindex代码>原因是元组在Julia中是不可变的,请参见。这意味着您必须在构造元组时为元组的每个字段分配一个值,并且不能对其进行变异
如果你想要一个可变容器,你应该考虑使用向量而不是元组。例如:
julia> x = Vector{Int}(undef, 4)
4-element Array{Int64,1}:
0
0
0
0
julia> x[2] = 9
9
julia> x
4-element Array{Int64,1}:
0
9
0
0
^他们说了些什么,但如果你想找一个包含预先确定大小的快乐媒体,请看,特别是MVector
s^他们说的,但是如果你想找一个包含预先确定大小的快乐媒体,请看,特别是MVector
s