Error: array operation d1[] + d2[] without assignment not implemented

Ilya Yaroshenko via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Sep 13 08:10:21 PDT 2014


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


More information about the Digitalmars-d-learn mailing list