opDot
было запланировано для устаревания . Вот почему это не задокументировано. Не используйте это. Вместо этого используйте alias this
. Вы можете использовать его для псевдонима определенного типа или функции, чтобы он мог действовать как этот тип. например,
struct S
{
int value;
alias value this;
}
сделает так, что переменная типа S
будет неявно преобразована в int
с использованием поля S
value
. Вы также можете использовать псевдоним функции следующим образом:
struct S
{
int get()
{
return 7;
}
alias get this;
}
хотя это может быть более ограничивающим, поскольку dmd в настоящее время не поддерживает наличие нескольких alias this
типов для одного типа (хотя в конечном итоге это должно произойти). В этом случае вы можете неявно привести S
к int
, но не наоборот. Regarldess, alias this
предназначен для реализации неявных преобразований.
Если alias this
не совсем то, что вам нужно, другая возможность - opDispatch
. Это позволяет вам преобразовывать то, что находится на правой стороне точки, в другие вещи (например, превращать все вызовы на foo
в bar
). Но между этими двумя вы должны быть в состоянии делать практически все, о чем вы думали, с opDot
(и многое другое).