2012-03-26 11 views
8

ich mehr getroffen habe erwähnt über opDot Methode, das Mitglied Zugang aka Punkt-Operator, aber offizielle Dokumentation für sie fehlt, um eine Überlastung erlaubt. Es ist sicherlich nicht ausgefallen, wie std.typecons.Unique davon Gebrauch macht.d2: Was sind die Semantiken von opDot?

Weiß jemand, wie opDot verwendet werden kann, und warum gibt es keine Dokumentation darüber?

+3

Versuchen Sie Folgendes: http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan

Antwort

12

opDot hat scheduled for deprecation gewesen. Deshalb ist es nicht dokumentiert. Benutze es nicht. Verwenden Sie stattdessen alias this. Sie können damit einen bestimmten Typ oder eine bestimmte Funktion für einen Typ verwenden, so dass er wie dieser Typ funktionieren kann. z.B.

struct S 
{ 
    int value; 
    alias value this; 
} 

wird es machen, so dass eine Variable vom Typ S implizit int mit S ‚s value Feld konvertieren. Sie können auch Alias-Funktionen, die Art und Weise:

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

    alias get this; 
} 

aber, dass mehr einschränkend sein kann, da DMD derzeit nicht mehrere Träger mit alias this es für einen Typ (es sollte schließlich obwohl). In diesem Fall können Sie dann werfen implizit S auf ein ein int, aber nicht umgekehrt. Regarldess wird alias this für die Umsetzung implizite Konvertierungen vorgesehen.

Wenn alias this nicht ganz das ist, was Sie wollen, ist eine andere Möglichkeit opDispatch. Es ermöglicht Ihnen, zu transformieren, was auf der rechten Seite des Punktes in andere Sachen (z Schalten Sie alle Anrufe an foo in bar). Aber zwischen diesen beiden solltest du in der Lage sein, so ziemlich alles zu tun, was du mit opDot (und viel mehr) machen wolltest.

+0

Danke, sehr klare Antwort! – toriningen