On Monday, 21 October 2013 at 19:37:47 UTC, Jonathan M Davis
wrote:
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
What would be the issue/s with disallowing appending to slices?
So you'd have to explicitly duplicate before you could append.