julia - Julia 复合类型中的参数数组长度

标签 julia

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

相关文章:

callback - 如何在 Dash for Julia 中使用模式匹配回调

python 3 : read Julia's JLD format

Julia 微分方程.jl 说 "InexactError"

macros - Julia 中的宏调用与宏定义环境

multithreading - Julia 多线程 "broadcast return"

arrays - 创建具有 "hidden"额外索引的数组

Julia 元编程 : "ERROR: unsupported or misplaced expression $"

performance - Julia 从标准正态分布中绘制

import - 是否可以在 Julia 中直接导入宏?

package - 在 Julia 中,你如何检查、列出、更新你的包?