我正在使用Julia的StrPack模块从文件中读取二进制数据。
要阅读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 :(得分:2)
您的问题仅针对StrPack
。在Julia中,数组的类型仅限于元素类型及其排名。 (Rank是它具有多少索引的计数。)StrPack
包使用@struct
宏在[number]
声明后查找Array
,并手动创建Julia中适当的bits
类型。您尝试做的事情是这样的:
@struct type MyType{n}
values::Array{Float64}[n]
end
不幸的是,StrPack
的{{1}}宏根本不支持类型参数,并且它会在@struct
上阻塞,因为它无法正确命名类型。