Yup. The reason this works when oVector is a Vector{Float64} is that Julia
makes a copy in the process of converting it to a Vector{Int} when you
construct the Cell.
Simon
On Thursday, September 11, 2014 12:53:52 AM UTC-4, John Myles White wrote:
>
> 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]
> <javascript:>> 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
>
>