我想要一个类型别名,例如 MyArrayType{N}
,这样 Array{T,N} <: MyArrayType{N}
对于任何 T
。
例如,
julia> Array{Float64, 1} <: MyArrayType{1}
true
julia> Array{Float64, 2} <: MyArrayType{1}
false
julia> Array{Float64, 2} <: MyArrayType{2}
true
julia> Array{Integer, 1} <: MyArrayType{1}
true
julia> Array{Any, 1} <: MyArrayType{1}
true
julia> Array{Any, 8964} <: MyArrayType{8964}
true
julia> Array{Any, 2047} <: MyArrayType{8964}
false
我知道已经有一个类型别名 Array{T}
可以做什么Array{T,N} <: Array{T}
对于任何 N
。是否已经有一个类型别名可以为 MyArrayType
执行我想要的操作上面?
最佳答案
正如您所注意到的,您始终可以省略尾随类型参数作为不限制它们的简写。因此,通过创建交换参数顺序的类型别名,您可以省略数组的元素类型:
julia> typealias MyArrayType{N,T} Array{T,N}
Array{T,N}
julia> Array{Float64, 1} <: MyArrayType{1}
true
julia> Array{Any, 8964} <: MyArrayType{8964}
true
julia> Array{Float64, 2} === MyArrayType{2, Float64}
true
关于arrays - 具有指定维度的数组的类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35445040/