types - 获取参数类型的参数

标签 types julia

假设我定义了一个这样的类型

type Point{Tx, Ty} end

然后我创建一个这种类型的变量,例如,
a = Point{Int64, :something}()

现在,我只知道我可以得到 a 的类型来自 typeof(a) .即,Point{Int64, :something} .
但是,我需要的只是参数 TxTy .

有什么方法可以获得这些参数TxTy ?

最佳答案

你可以定义一个函数如下

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/

相关文章:

typescript - TypeScript 类型中 bivarianceHack 的目的是什么?

c# - 通过层传递类型

julia - Julia 是否有相当于 Python 的 __del__ 的关键字

julia - 从 DataFrame 中提取值作为 Float64 值而不是 Vector

file - 读取JLD文件

go - 将界面转换为另一个界面并复制内容

c++ - 如何防止以错误的顺序传递函数参数?

运行时的 C# 泛型和类型安全

dependencies - 如何确保 Julia 代码和相关依赖项的可重复性?

julia - Vega-Lite - 多个数据集的一个图