On Tuesday, 7 July 2015 at 08:06:50 UTC, tcak wrote:

I have never used arrays in that way before, though I don't get why you are writing return line in that way. Shouldn't it be like `return (x[] * x[]);` ?


There's nothing fundamentally wrong with doing that in the return line. For instance, the one I duplicated the array on looks like

int[] square_array_dup(int[] x)
{
        auto y = x.dup;
        return y[] *= x[];
}

To get your way to work requires

int[] square_array(int[] x)
{
        int[] y;
        y.length = x.length;
        y[] = x[] * x[];
        return y;
}

which can be slower.

Anyway, the main reason I used x[] *= x[] was that the original code I had written was not in a function and was just

void main()
{
        int len = 10;
        auto x = len.iota.array;
        x[] *= x[];
}

Obviously, in this case, I can just do a map before putting it into an array, but then I got more interested in squaring arrays.

Reply via email to