如果需要在Julia的子结构中放置一个值,怎么可能? 例如,我有这种结构
struct individual
position
cost
end
pop = [individual(rand(0:1,10),[]) for i in 1:2]
如果代码中的位置将更改为该值x=[0, 2, 0, 0, 2, 0, 0, 2, 2, 2]
怎么可能?
如果使用append!()
append!(pop[1].position,x)
individual([1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2, 0, 0, 2, 0, 0, 2, 2, 2], Any[])
但是我想要这个
individual([0, 2, 0, 0, 2, 0, 0, 2, 2, 2], Any[])
请你帮我一下。非常感谢
答案 0 :(得分:2)
在添加x
之前先清空容器,如下所示:
append!(empty!(pop[1].position), x)
或将individual
定义为可变的,然后您可以像这样简单地使用赋值:
julia> mutable struct individual
position
cost
end
julia> pop = [individual(rand(0:1,10),[]) for i in 1:2]
2-element Array{individual,1}:
individual([1, 1, 1, 1, 0, 0, 0, 0, 0, 1], Any[])
individual([0, 0, 0, 1, 0, 1, 1, 1, 1, 1], Any[])
julia> x=[0, 2, 0, 0, 2, 0, 0, 2, 2, 2]
10-element Array{Int64,1}:
0
2
0
0
2
0
0
2
2
2
julia> pop[1].position = x
10-element Array{Int64,1}:
0
2
0
0
2
0
0
2
2
2
julia> pop
2-element Array{individual,1}:
individual([0, 2, 0, 0, 2, 0, 0, 2, 2, 2], Any[])
individual([0, 0, 0, 1, 0, 1, 1, 1, 1, 1], Any[])