在Julia中具有任意数量元素的元组的类型别名

在Julia中具有任意数量元素的元组的类型别名,julia,Julia,Julia中2dim元组的类型别名可以定义为 const Tuple2f = Tuple{Float64, Float64} 以同样的方式,3dim-one将是 const Tuple3f = Tuple{Float64, Float64, Float64} 但是如何定义一个具有任意数量的元素,而这些元素不能直接编码?Julia支持。您可以通过将元组的最后一个参数设置为Vararg类型来实现所需的功能。下面是具有任意数量的Float64参数的Tuple类型的示例 julia> Tupl

Julia中2dim元组的类型别名可以定义为

const Tuple2f = Tuple{Float64, Float64}
以同样的方式,3dim-one将是

const Tuple3f = Tuple{Float64, Float64, Float64}
但是如何定义一个具有任意数量的元素,而这些元素不能直接编码?

Julia支持。您可以通过将元组的最后一个参数设置为
Vararg
类型来实现所需的功能。下面是具有任意数量的
Float64
参数的
Tuple
类型的示例

julia> TupleArbf = Tuple{Vararg{Float64}}
Tuple{Vararg{Float64,N} where N}

julia> const Tuple2f = Tuple{Float64, Float64}
Tuple{Float64,Float64}

julia> const Tuple3f = Tuple{Float64, Float64, Float64}
Tuple{Float64,Float64,Float64}

julia> a = (1.0, 2.0); b = (1.0, 2.0, 3.0, 4.0);

julia> isa(a, Tuple2f)
true

julia> isa(a, TupleArbf)
true

julia> isa(b, TupleArbf)
true

julia> isa(b, Tuple2f)
false

julia> Tuple2f <: TupleArbf
true

julia> Tuple3f <: TupleArbf
true
julia>TupleArbf=Tuple{Vararg{Float64}
元组{Vararg{Float64,N}其中N}
julia>consttuple2f=Tuple{Float64,Float64}
元组{Float64,Float64}
julia>const Tuple3f=Tuple{Float64,Float64,Float64}
元组{Float64,Float64,Float64}
julia>a=(1.0,2.0);b=(1.0,2.0,3.0,4.0);
julia>isa(a,Tuple2f)
真的
julia>isa(a,TupleArbf)
真的
julia>isa(b,TupleArbf)
真的
julia>isa(b,Tuple2f)
假的
julia>Tuple2f Tuple3fjulia支持。您可以通过将元组的最后一个参数设置为
Vararg
类型来实现所需的功能。下面是具有任意数量的
Float64
参数的
Tuple
类型的示例

julia> TupleArbf = Tuple{Vararg{Float64}}
Tuple{Vararg{Float64,N} where N}

julia> const Tuple2f = Tuple{Float64, Float64}
Tuple{Float64,Float64}

julia> const Tuple3f = Tuple{Float64, Float64, Float64}
Tuple{Float64,Float64,Float64}

julia> a = (1.0, 2.0); b = (1.0, 2.0, 3.0, 4.0);

julia> isa(a, Tuple2f)
true

julia> isa(a, TupleArbf)
true

julia> isa(b, TupleArbf)
true

julia> isa(b, Tuple2f)
false

julia> Tuple2f <: TupleArbf
true

julia> Tuple3f <: TupleArbf
true
julia>TupleArbf=Tuple{Vararg{Float64}
元组{Vararg{Float64,N}其中N}
julia>consttuple2f=Tuple{Float64,Float64}
元组{Float64,Float64}
julia>const Tuple3f=Tuple{Float64,Float64,Float64}
元组{Float64,Float64,Float64}
julia>a=(1.0,2.0);b=(1.0,2.0,3.0,4.0);
julia>isa(a,Tuple2f)
真的
julia>isa(a,TupleArbf)
真的
julia>isa(b,TupleArbf)
真的
julia>isa(b,Tuple2f)
假的

julia>Tuple2f Tuple3f
NTuple
适合您的需要,通过您的示例,假设所有元素的类型相同:

julia> Threes = NTuple{3, Int}
 Tuple{Int64,Int64,Int64}

julia> isa((2, 0, 16), Threes)
 true

julia> SoManyFloats{N} = NTuple{N, Float64}
 Tuple{Vararg{Float64,N}} where N

julia> isa((31.0, 33.58), SoManyFloats{2})
 true

NTuple
适合您的需要,通过您的示例,假设所有元素的类型相同:

julia> Threes = NTuple{3, Int}
 Tuple{Int64,Int64,Int64}

julia> isa((2, 0, 16), Threes)
 true

julia> SoManyFloats{N} = NTuple{N, Float64}
 Tuple{Vararg{Float64,N}} where N

julia> isa((31.0, 33.58), SoManyFloats{2})
 true