non-ref null arrays [was: Re: Decision on container design]

spir denis.spir at gmail.com
Fri Jan 28 16:37:06 PST 2011


On 01/29/2011 01:01 AM, bearophile wrote:
> Built-in AAs are currently broken and in need to be fixed:
>
> import std.stdio: writeln;
> void foo(int[int] aa, int n) {
>      aa[n] = n;
> }
> void main() {
>      int[int] a;
>      foo(a, 0);
>      writeln(a);
>      a[1] = 1;
>      foo(a, 2);
>      writeln(a);
> }
>
> Bye,
> bearophile

Variation on the theme:

void foo(int[int] aa, int n) {
     aa[n] = n;
}
void foo(int[] a, int n) {
     a ~= n;
}
void bar(ref int[int] aa, int n) {
     aa[n] = n;
}
void bar(ref int[] a, int n) {
     a ~= n;
}

unittest {
     int[int] aa;
     foo(aa, 3);
     writeln(aa.length);

     int[] a;
     foo(a, 3);
     writeln(a.length);

     int[int] bb;
     bar(bb, 3);
     writeln(bb.length);

     int[] b;
     bar(b, 3);
     writeln(b.length);
}

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list