On Saturday, 7 June 2014 at 21:32:08 UTC, Jonathan M Davis via
Digitalmars-d-learn wrote:
On Sat, 07 Jun 2014 20:56:13 +0000
Paul via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:
Dynamic array is really reference. Right? But why modification
of
parameter in this case does not work:
void some_func(string[] s) {
s ~= "xxx"; s ~= "yyy";
}
but this works:
void some_fun(ref string[] s) {
s ~= "xxx"; s ~= "yyy";
}
In the 1st case s is reference too, is not it?
The first case just slices the array, so it refers to the same
data, but the
slice itself is a different slice, so if you append to it, it
doesn't affect
the original slice, and it could then result in a reallocation
so that the two
slices don't even refer to the same data anymore.
You should read this: http://dlang.org/d-array-article.html
- Jonathan M Davis
Oh, thank you!