Dav*_*ira 2 arrays types julia
在 Julia 中,如果我 make x = rand(10,2),那么
>> typeof(x)
Matrix{Float64} (alias for Array{Float64, 2})
Run Code Online (Sandbox Code Playgroud)
如何访问类型参数,即如何获得数组x是Float64and的数组2?
(顺便说一句:正如您的标题所说,您不是在寻找“子类型”,而是在寻找“类型参数”。)
元素类型很容易获得eltype:
jl> eltype(x)
Float64
Run Code Online (Sandbox Code Playgroud)
可以从size数组的 中检索维数:
jl> length(size(x))
2
Run Code Online (Sandbox Code Playgroud)
编辑:更好地使用ndims:
jl> ndims(x)
2
Run Code Online (Sandbox Code Playgroud)
如果您无权访问x自身,而只能访问其类型,则eltype仍然有效:
jl> T = typeof(x);
jl> eltype(T)
Float64
Run Code Online (Sandbox Code Playgroud)
维数有点困难。您可以检查类型变量的属性(但我不建议这样做,因为这是类型的内部实现细节,可能不稳定):
jl> T.parameters
svec(Float64, 2)
jl> T.parameters[2]
Run Code Online (Sandbox Code Playgroud)
更好的方法可能是制作一个函数来为您获取此信息:
jl> dims(::Type{<:AbstractArray{T, N}}) where {T, N} = N
dims (generic function with 3 methods)
jl> dims(T)
2
Run Code Online (Sandbox Code Playgroud)
编辑:您也可以ndims与类型变量一起使用:
jl> ndims(T)
2
Run Code Online (Sandbox Code Playgroud)
所以,实际上,答案是:eltype对于元素类型和ndims维度,无论是当您拥有数组还是拥有数组类型时。