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]
}


Reply via email to