This sure looks like you're not making any copies when you seem to want copies.

In particular, this line:

>   cellList[i] = Cell(i, oVector)

probably needs to be

>   cellList[i] = Cell(i, copy(oVector))

 -- John

On Sep 10, 2014, at 6:41 PM, Andre Bieler <[email protected]> wrote:

> can anyone tell me why the following code does not work as (I) expected?
> I have a simple type Cell which only has an index and a origin array.
> When creating multiple instances of this Cell type in a loop and assigning
> different origin arrays to them, in the end all instances have the same
> origin array. I am using julia 0.3
> 
> (It does work if the commented line is un-commented though..)
> 
> 
> type Cell
>   index::Int64
>   origin::Array{Int64,1}
> end
> 
> nDim = int(3)
> nCells = int(2)
> 
> cellList = Array(Cell, nCells)
> oVector = Array(Int64, nDim)       # does not work as expected
> #oVector = Array(Float64, nDim)     # does work
> 
> for i=1:nCells
>   for j=1:nDim
>     oVector[j] = i
>   end
>   cellList[i] = Cell(i, oVector)
> end
> 
> # after the loop, both cells have same origin...
> println(cellList[1].index, ": ", cellList[1].origin)
> println(cellList[2].index, ": ", cellList[2].origin)
> 
> 
> thanks in advance
> 
> andre

Reply via email to