Getting a working example of opIndexAssign using opSlice ... have troubles ...

james.p.leblanc james.p.leblanc at gmail.com
Sun Aug 15 21:28:53 UTC 2021


On Sunday, 15 August 2021 at 21:15:02 UTC, Bastiaan Veelo wrote:
> On Sunday, 15 August 2021 at 20:41:51 UTC, james.p.leblanc

> — Bastiaan.

Bastiaan,

Thanks kindly for your response!

Unfortunately, I do not see what the program does.  I mean A is a 
structure
that has only functions.  So, how are any elements of this being 
set to
the value of v?

I tried extending the code mentioned by adding a member array, 
but no
luck.

I often have difficulties to understand the notations used in the 
spec,
and only sometimes can I extend them to working examples.

Would it be possible to add the last couple of details regarding
an array member?  I attempted but the values always remain zero
even when I set v=4.


import std;

     struct A
     {
        int[5] a;
        int opIndexAssign(int v) // overloads a[] = v
        {
           writeln(__FUNCTION__);
           return 42;
        }
        int opIndexAssign(int vh, size_t[2] x)  // overloads a[i 
.. j] = v
        {
           writeln(__FUNCTION__);
           return 43;
        }
        int[2] opSlice(size_t x, size_t y)     // overloads i .. j
        {
           writeln(__FUNCTION__);
           return [44, 45];
        }
     }

     void main()
     {
        A a;
        int v=4;
        writeln(a);

        a[] = v;  // same as a.opIndexAssign(v);
        writeln(a);
        a[3..4] = v;  // same as a.opIndexAssign(v, 
a.opSlice(3,4));
        writeln(a);
     }


Thanks once again,
James














More information about the Digitalmars-d-learn mailing list