2012-03-26 14 views
8

Spotkałem kilka wzmianek o metodzie opDot, która pozwala przeciążać dostęp do użytkownika, a także operatora kropki, ale brakuje oficjalnej dokumentacji. Z pewnością nie jest z niego rezygnacja, ponieważ korzysta z niego std.typecons.Unique.d2: Co to jest semantyka opDot?

Czy ktoś wie, w jaki sposób można użyć opDot i dlaczego nie ma na ten temat dokumentacji?

+3

Spróbuj tego: http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan

Odpowiedz

12

opDot został scheduled for deprecation. Dlatego nie jest to udokumentowane. Nie używaj go. Zamiast tego użyj alias this. Możesz go użyć do aliasu określonego typu lub funkcji do typu, aby mógł działać jak ten typ. na przykład

struct S 
{ 
    int value; 
    alias value this; 
} 

zrobi to tak, że zmienna będzie typu S niejawnie przekonwertować do int użyciu S „s value pole. Można również funkcje alias sposób:

struct S 
{ 
    int get() 
    { 
     return 7; 
    } 

    alias get this; 
} 

jednak, że może być bardziej ograniczające, ponieważ DMD nie obsługuje obecnie posiadające wiele alias this es dla typu (to powinno ostatecznie chociaż). W takim przypadku można niejawnie rzucić S na int, ale nie odwrotnie. Regarldess, alias this jest przeznaczony do implementacji niejawnych konwersji.

Jeśli nie jest to, co chcesz, inną możliwością jest opDispatch. Pozwala przekształcić to, co znajduje się po prawej stronie kropki, w inne elementy (np. Zamień wszystkie połączenia na foo na bar). Ale między tymi dwoma, powinieneś być w stanie zrobić prawie wszystko, co myślisz o zrobieniu z opDot (i wiele więcej poza tym).

+0

Dzięki, bardzo jasne odpowiedź! – toriningen