Julia 错误:设置域!无法在中更改不可变结构

Julia 错误:设置域!无法在中更改不可变结构,julia,Julia,我正在更新一些旧代码,现在出现错误:ERROR:setfield!当我尝试更改不可变结构的值时,无法在Julia中更改不可变结构。对于如何编辑/变异这些值,是否有一个通用的解决方法(考虑到类型是显式不可变的,所以通常尝试更改它不是一个好主意,这可能是一个相当愚蠢的问题) 但是,作为一个不完善的解决方案,您可以考虑使用 SETField包,如下面的例子。 using Setfield struct S a::Int b::String end 使用: julia> s =

我正在更新一些旧代码,现在出现错误:
ERROR:setfield!当我尝试更改不可变结构的值时,无法在Julia中更改不可变结构。对于如何编辑/变异这些值,是否有一个通用的解决方法(考虑到类型是显式不可变的,所以通常尝试更改它不是一个好主意,这可能是一个相当愚蠢的问题)

但是,作为一个不完善的解决方案,您可以考虑使用<代码> SETField包,如下面的例子。

using Setfield
struct S
    a::Int
    b::String
end
使用:

julia> s = S(2, "hello")
S(2, "hello")

julia> s = @set s.a = 5
S(5, "hello")

请注意,在许多情况下,这可能比实际将S的类型更改为
mutable

要快,这是一个很好的答案@julia 1.0 structs中的LoganKilpatrick在默认情况下是不可变的,这个包是处理不可变数据的好方法。