On Wednesday, 10 July 2013 at 18:45:56 UTC, H. S. Teoh wrote:
On Wed, Jul 10, 2013 at 08:38:40PM +0200, JohnnyK wrote:
[...]
Reminds me of how Delphi (aka Pascal) strings are work. Thanks
everyone this answers some of my questions. Now what about
when the
return type of a function is a string? Is D returning the
pointer
to the string structure or is it returning the structure?
D structs are always passed by value, so it's the
length+pointer pair
that's being returned. There's no extra indirection involved
here. What
it points to stays where it is on the GC heap.
So for example:
int[] data = [1,2,3];
int[] f() {
return data;
}
void main() {
auto arr = f(); // returns copy of data's ptr+length
arr.length--; // modifies this copy
assert(arr == [1,2]);
assert(data == [1,2,3]); // data itself hasn't changed
}
Does this help?
I understand thanks for the information.