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.

Reply via email to