参数数组长度,单位为Julia';s组合类型

参数数组长度,单位为Julia';s组合类型,julia,Julia,我正在使用Julia的模块从文件中读取二进制数据 要读取100个值的列表,请使用以下struct: @struct type MyType values::Array{Float64}[100] end 而且效果很好 但是,我想知道是否有一种方法可以参数化数组的长度。Julia的参数化类型只允许更改内部类型(即,在上面的示例中,我可以用另一种类型替换Float64) 我也试过: length=100 @struct type MyType values::Array{Float

我正在使用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}

有什么想法吗?

您的问题是针对
StrPack
的。在Julia中,数组的类型仅限于元素类型及其秩。(秩是它有多少索引的计数。)
StrPack
包使用
@struct
宏在
数组
声明后查找
[number]
,并手动为其创建适当的
类型。您试图做的是这样的:

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

不幸的是,
StrPack
@struct
宏根本不支持类型参数,它将阻塞
MyType{n}
,因为它无法正确命名类型。

此时,数组维度已参数化,但数组长度未参数化。关于固定大小阵列的特殊阵列类型,有一些讨论,但AFAIK还没有人参与这项任务。讨论开始了