我正在更新一些旧代码,但现在收到错误:ERROR: setfield! immutable struct cannot be changed in Julia
当我尝试更改不可变结构的值时。对于如何编辑/改变这些值,是否有一个通用的解决方法(这可能是一个相当愚蠢的问题,因为类型是明确不可变的,因此尝试更改它通常不是一个好主意)。
最佳答案
据我所知,即使您获得指向不可变对象(immutable对象)的内存指针并尝试使用 ccal
,也无法安全地操作不可变对象(immutable对象)。
但是,作为一种不完美的解决方法,您可以考虑使用 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 的类型更改为可变
要快。
关于julia - 错误 : setfield! 无法在 Julia 中更改不可变结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044783/