Tipo de alias para tupla con número arbitrario de elementos de Julia

votos
0

Tipo de alias para Tupla 2dim en Julia se puede definir como

const Tuple2f = Tuple{Float64, Float64}

De la misma manera, uno 3DIM será

const Tuple3f = Tuple{Float64, Float64, Float64}

Pero, ¿cómo puedo definir una con un número arbitrario de elementos, que no puede ser codificado directamente?

Publicado el 20/10/2018 a las 10:50
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

NTuple se adapte a sus necesidades, asumiendo, por sus ejemplos, que todos los elementos son del mismo tipo:

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
Respondida el 20/10/2018 a las 20:00
fuente por usuario

votos
2

Julia apoya Tipos Vararg tupla . Se puede lograr lo que quiere, haciendo que el último parámetro de la tupla un Varargtipo. Aquí está un ejemplo de un Tupletipo con un número arbitrario de Float64parámetros.

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

Tenga en cuenta que Varargdebe ser el último parámetro de la Tupley el tipo de parámetros antes de que se puede hacer de cualquier tipo que desee.

Respondida el 20/10/2018 a las 12:58
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more