Dne 3.3.2016 v 03:39 Jack Stouffer via Digitalmars-d napsal(a):
Dynamic arrays are reference types in D;
No, they are value types, but mimic reference types in some cases
void fun(int[] arr) {
arr ~= 10;
}
void fun2(ref int[] arr) {
arr ~= 10;
}
void mod(int[] arr) {
if (arr.length) arr[0] = 7;
}
void mod2(ref int[] arr) {
if (arr.length) arr[0] = 7;
}
void main() {
int[] arr;
int[] arr2 = [1];
fun(arr);
fun(arr2);
writeln(arr); // []
writeln(arr2); // [1]
fun2(arr);
fun2(arr2);
writeln(arr); // [10]
writeln(arr2); // [1, 10]
mod(arr);
mod(arr2);
writeln(arr); // [7]
writeln(arr2); // [7, 10]
mod(arr);
mod(arr2);
writeln(arr); // [7]
writeln(arr2); // [7, 10]
}