2016-12-15 46 views
2

我使用Julia的StrPack模塊從文件中讀取二進制數據。Julia複合類型中的參數數組長度

要閱讀100個值的列表,使用以下struct

@struct type MyType 
    values::Array{Float64}[100] 
end 

,它工作正常。

但是,我想知道是否有一種方法來參數化數組的長度。 Julia的參數類型讓你只能改變內部類型(就是說,在上面的例子中,我可以用另一種類型替換Float64)。

我也試過這樣:

length=100 
@struct type MyType 
    values::Array{Float64}[length] 
end 

這給這個錯誤:

ERROR: TypeError: Test: in type definition, expected Type{T}, got Array{Float64,1} 

任何想法?

+0

此時,數組維度被參數化,但數組長度不是。圍繞固定大小數組的特殊數組類型進行了一些討論,但AFAIK沒有人加緊完成任務。討論從這裏開始(https://github.com/JuliaLang/julia/issues/5857) –

回答

2

您的問題是特定於StrPack。在Julia中,數組的類型僅限於元素類型及其級別。 (Rank是它有多少個索引的計數。)StrPack包使用@struct宏在Array聲明後查找[number],並且它在Julia中爲它手動創建適當的bits類型。你是試圖做的是這樣的:

@struct type MyType{n} 
    values::Array{Float64}[n] 
end 

不幸的是,StrPack@struct宏根本不支持類型的參數,它會窒息MyType{n},因爲它不會正確地命名類型。