Julia 获取类型参数的值

Ser*_*gey 5 types julia

我有一个参数类型。例如:

> Array([1 2;3 4])
Run Code Online (Sandbox Code Playgroud)

它的类型是

> typeof(Array([1 2;3 4]))

Array{Int64,2}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法获取第一个类型参数eltype

> eltype(typeof(Array([1 2;3 4])))

Int64
Run Code Online (Sandbox Code Playgroud)

如何访问第二个和可能的其他类型参数?

ffe*_*tte 6

如果您专门谈论(Abstract)Array类型,则可以使用以下方式检索维度ndims

julia> ndims(Array{Int64, 2})
2
Run Code Online (Sandbox Code Playgroud)


另一方面,如果您想编写一个自定义函数来从参数类型中提取给定参数,则可以使用如下构建函数:

julia> second_param(::Type{Array{T, N}}) where {T, N} = N
second_param (generic function with 1 method)

julia> second_param(Array{Int64, 2})
2
Run Code Online (Sandbox Code Playgroud)

(我在这里使用是Array为了示例,但可以使用相同类型的构造从任何其他参数类型中提取参数)