【问题标题】:Julia: fields of structs passed by valueJulia:按值传递的结构字段
【发布时间】:2018-07-17 12:31:20
【问题描述】:

在下面这段 Julia 代码中,st.a 和 b 是同一个数组,所以当我从 st.a 中删除一个元素时,这个元素也会从 b 中删除。是否有可能每次 a 创建 Mystruct 的对象 * 时都会生成一个新数组“*.a”?

struct Mystruct
     a::Array{Int64,1}
     Mystruct(a::Array{Int64,1}) = new(a)
end

b = [1, 2, 3, 4]
st = Mystruct(b)
deleteat!(st.a,1)

【问题讨论】:

    标签: julia


    【解决方案1】:

    我认为:

    struct Mystruct
         a::Array{Int64,1}
         Mystruct(a::Array{Int64,1}) = new(copy(a))
    end
    

    会做你想做的工作。

    【讨论】:

    • 不需要deepcopy,使用copy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2019-07-16
    • 2014-09-08
    相关资源
    最近更新 更多