fre*_*low 5 arrays d sharing deep-copy variable-assignment
将一个数组变量分配给另一个数组变量时,复制/共享多少信息?
int[] a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
int[] b = a;
a[0] = 42;
writefln("%s %s", a[0], b[0]); // 42 42
Run Code Online (Sandbox Code Playgroud)
显然,a并b共享相同的有效负载,因为42打印两次.
a ~= 10;
writefln("%s %s", a.length, b.length); // 11 10
Run Code Online (Sandbox Code Playgroud)
附加a不会改变b,所以长度似乎不是有效载荷的一部分?
b = a;
a ~= 11;
b ~= 42;
writefln("%s %s", a[11], b[11]); // 11 42
Run Code Online (Sandbox Code Playgroud)
符合D的实现是否也可以打印42 42?可以b ~= 42覆盖11内部a吗?
那到底什么时候a并且b相互分离?D在后台执行一些COW吗?