输入Juple中具有任意数量元素的元组的别名

时间:2018-10-20 10:50:46

标签: julia

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

"<br/>email@gmail.comhere{"userData": {"user_id":"4","name":"My Name here",
"email":email@gmail.com","username":"myusernamehere",
"token":"c0045c0d75e48f62919b1c0d16461af854049615df2c0d9a7bd755e9679e662a"}}" 

以同样的方式,3dim将是

const Tuple2f = Tuple{Float64, Float64}

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

请注意,Vararg应该是Tuple的最后一个参数,参数之前的类型可以是您想要的任何类型。