假设我定义了一个这样的类型
type Point{Tx, Ty} end
然后我创建一个这种类型的变量,例如,
a = Point{Int64, :something}()
现在,我只知道我可以得到
a
的类型来自 typeof(a)
.即,Point{Int64, :something}
.但是,我需要的只是参数
Tx
和 Ty
.有什么方法可以获得这些参数
Tx
和 Ty
?
最佳答案
你可以定义一个函数如下
eltypes{Tx,Ty}(::Type{Point{Tx, Ty}}) = (Tx, Ty)
eltypes(p) = eltypes(typeof(p))
(此处
::Type{Point{Tx, Ty}}
匹配 Point{Tx, Ty}
类型的参数)并使用它julia> eltypes(Point{Int, Float64}())
(Int64,Float64)
这是一个经常使用的习语,例如在Base中有类似的功能
eltype{T}(::Type{Set{T}}) = T
eltype(x) = eltype(typeof(x))
关于types - 获取参数类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35759794/