我正在使用 Julia 的 StrPack从文件中读取二进制数据的模块。
要读取 100 个值的列表,请使用以下结构
:
@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}
有什么想法吗?
最佳答案
您的问题特定于 StrPack
。在 Julia 中,数组的类型仅限于元素类型及其等级。 (排名是对其具有多少个索引的计数。)StrPack
包使用 @struct
宏在Array
声明,并在 Julia 中手动为其创建适当的 bits
类型。您尝试要做的是这样的:
@struct type MyType{n}
values::Array{Float64}[n]
end
不幸的是,StrPack
的 @struct
宏根本不支持类型参数,并且它会因 MyType{n}
而阻塞它不会正确命名类型。
关于julia - Julia 复合类型中的参数数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41162872/