Types 参数化复合类型中的恢复类型
在Julia(<0.6)中,当创建参数化复合类型(如Types 参数化复合类型中的恢复类型,types,julia,Types,Julia,在Julia(svec(Int64) 它比为它编写特定函数更通用,但我不确定它是否被视为正式函数。还有fieldtype fieldtype(typeof(Point(1.0, 1.0)), :x) # --> Float64 fieldtype(Point, :x) # --> T fieldtype(Point{Int64}, :x) # --> Int64 不知道这比只获取实例的类型有什么好处。谢谢,是的,我看到了数据类型的参数字段,但是感觉有点难看,这就是为什么av
MyType{T}
)时,是否有一种干净的方法可以从该类型的实例恢复T
以他们的文档为例:
type Point{T}
x::T
y::T
end
我可以创建一个对象p=Point(5.0,5.0)
,这里的T
将与Float64
匹配,这样相应的对象就是点{Float64}
。这里有没有一种干净的方法来恢复Float64
我可以
typeof(p.x)
但是感觉这样做不对。当需要类型参数时,应该定义一个参数化方法。这是访问类型参数的唯一正确方法 所以对于一个
点
function doSomething{T}(p::Point{T})
// You have recovered T
println(T)
end
类型保存在类信息中:
类型(点(1,2))。参数#->svec(Int64)
它比为它编写特定函数更通用,但我不确定它是否被视为正式函数。还有
fieldtype
fieldtype(typeof(Point(1.0, 1.0)), :x) # --> Float64
fieldtype(Point, :x) # --> T
fieldtype(Point{Int64}, :x) # --> Int64
不知道这比只获取实例的类型有什么好处。谢谢,是的,我看到了
数据类型的参数字段,但是感觉有点难看,这就是为什么aviks的解决方案看起来最好(更具表现力)。也就是说,您引用的解决方案很好,所以+1