On Saturday, 26 October 2013 at 16:10:46 UTC, Dmitry Olshansky wrote:
26-Oct-2013 20:01, Joseph Rushton Wakeling пишет:
On 25/10/13 20:41, Namespace wrote:
Did you mean to get rid of built-in arrays / kill int[] and replace it
with
Array!T?

Array!T is problematic as things stand -- e.g. you can't foreach over
one.

Sure you can. Try it and rejoice:

void main()
{
    import std.container, std.stdio;
    Array!int a = make!(Array!int)(1,2,3,4);
//the rule is: if a can be sliced then slice it and use that slice
    foreach(v; a)
    {
        writeln(v);
    }
}


The fact that foreach with a ref item or foreach with an index doesn't work makes using them a lot more of a hassle than built-in arrays though.

    void main()
    {
        import std.container, std.stdio;
        Array!int a = make!(Array!int)(1,2,3,4);
        foreach(ref v; a)
        {
            v *= v; // no effect on a
        }

        writeln(a[]); // [1, 2, 3, 4]

        foreach(v, i; a) // Error: cannot infer argument types
        {
            a[i] *= v;
        }
    }

Reply via email to