[英]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.