2015-11-03 2 views
1

Из D Language Reference, opIndexAssign имеет подпись:Правильно Перегрузки opIndexAssign

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

Что бы значение возвращаемого значения, так как в нем говорится, что высказывания типа:

Class[1, 3] = 5; 

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

Class.opIndexAssign(5, 1, 3); 

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

Компилятор, по-видимому, принимает как недействительные, так и непустые возвращаемые типы, но то, что является «правильным».

ответ

4

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

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