Правильно перегружаем opIndexAssign

Из справочника по языку D opIndexAssign имеет подпись:

type opIndexAssign(type value, size_t index0, ...);

Каково будет значение возвращаемого значения, поскольку в нем говорится, что такие утверждения, как:

Class[1, 3] = 5;

эквивалентно:

Class.opIndexAssign(5, 1, 3);

Я не вижу использования возвращаемого значения в таких выражениях, но почему в ссылке на язык D используется вышеуказанная перегрузка, которая что-то возвращает?

Компилятор, похоже, принимает как возвращаемые, так и не пустые типы возвращаемых данных, но каков "правильный".

1 ответ

Решение

Это справедливо сказать что-то вроде int a = Class[1] = 2;В цепочке оператора равенства это иногда делается с массивами, поэтому перегрузка это тоже позволяет.

Если вы возвращаете значение, это позволяет. Если вы вернете void, такой код не будет компилироваться. Это не является строго неправильным, но соглашение заключается в том, что присваивание должно возвращать значение, которое было назначено для разрешения такой цепочки.

Другие вопросы по тегам