[英]Recover type in parametric composite type
在Julia(<0.6)中,当创建参数复合类型(如MyType{T}
,是否有一种从该类型的实例中恢复T
的简洁方法?
以他们的文档为例:
type Point{T}
x::T
y::T
end
我可以创建一个对象p = Point(5.0,5.0)
,这里T
将与Float64
匹配,以便相应的对象是Point{Float64}
。 有一个干净的方法来恢复Float64
吗?
我可以做
typeof(p.x)
但感觉这不是正确的事情。
如果需要type参数,则应定义参数方法。 这是访问type参数的唯一正确方法。
所以对于一个Point
,
function doSomething{T}(p::Point{T})
// You have recovered T
println(T)
end
类型保存在类信息中:
typeof(Point(1, 2)).parameters # -> svec(Int64)
它比为它编写特定功能更为通用,但我不确定它是否被认为是正式的。
还有fieldtype
fieldtype(typeof(Point(1.0, 1.0)), :x) # --> Float64
fieldtype(Point, :x) # --> T
fieldtype(Point{Int64}, :x) # --> Int64
不知道如何才能获得实例的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.