Changing elements during foreach

Jonathan M Davis jmdavisProg at gmx.com
Mon Oct 21 12:37:35 PDT 2013


On Monday, October 21, 2013 21:16:00 qznc wrote:
> On Monday, 21 October 2013 at 16:22:29 UTC, Krzysztof Ciebiera
> 
> wrote:
> > I understand slices now and I don't find it consistent with "no
> > shoot in the foot by default" statement.
> 
> I agree. The pitfalls are well understood, yet everybody seems to
> love them. Ok, compared to C array they are an improvement due to
> bounds checking. If the elements are const or immutable (string)
> everything is fine, but write+append is basically
> implementation-defined behavior.
> 
> Once there is a proper std.collections, I will probably adapt my
> tutorial to recommend a safe alternative (ArrayList?).

Just don't use slices when appending. It's only an issue when you're appending 
and relying on slices continuing to refer to the same array, and that's not 
going to work. Slices are primarily for reading, not writing. Using a 
container doesn't change that. It just makes it so that you can't even attempt 
to append to a slice, because the slice is a different type than that container 
and won't support appending.

- Jonathan m Davis


More information about the Digitalmars-d-learn mailing list