On Saturday, 13 September 2014 at 14:18:57 UTC, deed wrote:
struct Vector (T)
{
T[]arr;
void opSliceAssign (T[] a) { arr[] = a[]; }
}
unittest
{
auto v = Vector!double([1, 2]);
double[] d1 = [11, 12];
double[] d2 = [21, 22];
double[] d3 = new double[](2);
d3[] = d1[] + d2[];
assert (d3 == [11.+21., 12.+22.]);
assert (is(typeof(d1[] + d2[]) == double[]));
v[] = d1[] // Fine
v[] = d1[] + d2[]; // Error: array operation d1[] + d2[]
without assignment not implemented
}
How can opSliceAssign be defined to make this work?
Hi!
struct Vector (T)
{
T[]arr;
T[] opSlice() { return arr; }
}
Vector!double v;
double[] d;
v[][] = d[] + d[];
//first [] call opSlise, second [] for array syntax
Best Regards,
Ilya