为什么可变结构不能在 Julia 的函数内部定义

Vin*_*nod 5 struct global local julia

为什么 Julia 的函数内部不能定义可变结构体?

function test()
    mutable struct ABC
        x
        y
        z
        a
    end 
end
Run Code Online (Sandbox Code Playgroud)

抛出错误:

ERROR: LoadError: syntax: "struct" expression not at top level
Run Code Online (Sandbox Code Playgroud)

但是,如果该结构是全局的,位于函数外部并在函数内部访问,则代码可以正常工作。

fre*_*kre 7

正如错误所示,结构类型必须在顶层定义(即在“模块范围”中),并且您不能像示例中那样定义函数局部结构。

如果您确实不想在模块中定义结构类型,那么您可以使用 a NamedTuple,它有时可以代替“匿名结构类型”。例子:

function test()
    nt = (x = 1, y = 2, z = 3, a = "hello")
    # ...
end
Run Code Online (Sandbox Code Playgroud)

  • 而 `Dict` 可以像某种可变结构一样工作。 (2认同)