On 3/8/25 4:14 AM, Anonymouse wrote: > On Saturday, 8 March 2025 at 12:02:41 UTC, Nick Treleaven wrote: >> `assert(0 in aa2)` actually fails too. > > So it does! My bad. It makes more sense now. > >> When an AA is null, it must be passed by ref to modify it. Once it is >> non-null, its keys and values can be modified. But even a non-null AA >> cannot be reassigned by passing it without ref. >> >> Note that an AA can be constructed using `new` before passing by >> value. See: >> https://dlang.org/spec/hash-map.html#construction_and_ref_semantic > > I'll try that, thanks.
To complete the story, it is the same with arrays: void main() { int[] arr; addElement(arr); // This array is not affected. assert(arr is null); // Passes } void addElement(int[] arr) { // Only this local array is initialized. arr ~= 42; } Ali