簡體   English   中英

參數復合類型中的恢復類型

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM