On Wednesday, 22 January 2020 at 15:26:06 UTC, mark wrote:
I've done this but my impression from the docs is that passing slices and associative arrays is already done by reference so these aren't needed?

They are pointers passed by value.

If you're familiar with C, think of passing

struct Array {
   size_t length;
   element* ptr;
}


The elements are passed by ref there; they aren't copied to the function and any changes to them will be visible outside.

BUT if you change the length of it or reallocate it in any way those changes are NOT seen outside.

So with AAs and slices, if you just want to work with existing elements, no need for ref. But if you are going to do any kind of resizing - adding or removing elements - ref is likely what you want.

Reply via email to