julia - 错误 : setfield! 无法在 Julia 中更改不可变结构

标签 julia

我正在更新一些旧代码,但现在收到错误: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/

相关文章:

asynchronous - 如何在 Julia 中使用回调进行异步 Web 查询?

python - 有没有办法告诉 jupyter notebook 是用哪个内核构建的?

arrays - 如何在 Julia 中按行填充数组

datatables - 如果此单元格的两个值在 Julia 的漂亮表格中具有相反的符号,则更改单元格颜色

plot - IJulia 情节 One Liner

python 3 : read Julia's JLD format

julia - 字典的向量化索引

c++ - 在 C++ 中嵌入 Julia

arrays - 在 Julia 中将字符串数组解析为对象

matlab - Julia 3D 曲面图,如 Matlab,对数比例的色彩图