opIndexAssign
Timon Gehr
timon.gehr at gmx.ch
Thu Oct 5 12:00:22 UTC 2023
On 10/3/23 00:11, Salih Dincer wrote:
> Hi,
>
> opIndexAssign, which is void, cannot compromise with opIndex, which is a
> ref! Solution: Using opSliceAssign. Could this be a bug? Because
> there is no problem in older versions (e.g. v2.0.83).
>
> ```d
> struct S
> {
> int[] i;
>
> ref opIndex(size_t index) => i[index];
>
> auto opSliceAssign/*
> auto opIndexAssign//*/
> (int value) => i[] = value;
> }
>
> void main()
> {
> auto s = S([1, 2]);
>
> s[] = 2;
> assert(s.i == [2, 2]);
>
> s[1] = 42;
> assert(s.i == [2, 42]);
> }
> ```
> **Source:** https://run.dlang.io/is/G3iBEw
> If you converted comment line 7 with // and you will see this error:
>
>> onlineapp.d(19): Error: function `onlineapp.S.opIndexAssign(int
>> value)` is not callable using argument types `(int, int)`
>> onlineapp.d(19): expected 1 argument(s), not 2
>
> SDB at 79
void opIndexAssign(int value, int index){ i[index] = value; }
More information about the Digitalmars-d-learn
mailing list