Как можно поместить значение в подзаписи структуры? - PullRequest
2 голосов
/ 19 мая 2019

Если необходимо указать значение в подструктуре в 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!(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[])

не могли бы вы мне помочь.Большое спасибо

1 Ответ

2 голосов
/ 19 мая 2019

Просто очистите контейнер перед добавлением 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[])
...