2009-10-19 20 views
15

Mi chiedo quale tipo di sovraccarico dell'operatore sia possibile (e con quale versione di Delphi)? Grazie a Hallvard's great write-up on operator overloading, so di:Quali tipi di overload dell'operatore supporta Delphi?

  • Add (Sinistra, Destra: Type): Tipo (per il '+' operatore)
  • Sottrai (Sinistra, Destra: Type): Tipo (per il ' -' operatore)
  • Multiply (sinistra, Destra: Type): Tipo (per il '*' operatore)
  • Divide (sinistra, Destra: Type): Tipo (per il 'operatore /')
  • implicito (aValore: tipo): AnotherType e
  • Implicito (aValore: Altro tipo): Tipo (per assegnazioni implicite: a: = b)
  • esplicita (aValue: Tipo): AnotherType e
  • esplicita (aValue: AnotherType): tipo (ad assignmetns esplicite di 'getta': a: = tipo (b)

Tuttavia, ciò che non conosco sono i nomi degli operatori '=', ' =', '<', '<>', '>' e '> ='. Esistono questi e da quale versione di Delphi posso usarli?

PS: ho ancora utilizzare Delphi 2009 in questo momento, così avrei un altro forte di aggiornamento-argomento se 2010 offre questi ;-)

risposta

16

In realtà, ho trovato la risposta a questa me stesso, ma mantenuto la questione Posso immaginare che le persone cercheranno regolarmente queste informazioni su StackOverflow;

La descrizione ufficiale sul overloaders operatore può essere trovato qui: http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

Principalmente, quelle che cercavo sono denominati:

  • Equal, per '=' confronto: Equal (un: tipo ; b: type): Boolean;
  • NotEqual, per confronto '<>': NotEqual (a: type; b: type): Boolean;
  • GreaterThan, per confronto '>': GreaterThan (a: type; b: type) Boolean;
  • GreaterThanOrEqual, per confronto '> =': GreaterThanOrEqual (a: type; b: type): resultType;
  • LessThan, per confronto '<': LessThan (a: type; b: type): resultType;
  • LessThanOrEqual, per '< = 'confronto: LessThanOrEqual (a: type; b: type): resultType;
+0

pagina è stata spostata [qui] (http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_ (Delphi)) – pritaeas

+0

@pritaeas: Grazie, ho aggiornato il link. – PatrickvL

9

Ho appena inserito il mio notes online di una sessione sui tipi annullabili con sovraccarico dell'operatore che ho dato durante alcune conferenze.

Ora contiene una tabella degli operatori, i nomi e ciò che funziona/non funziona. WordPress inizialmente malformava quella tabella, ma sono riuscito a ripristinarla.

È inoltre possibile scaricare il full set of slides and source code demos.

In breve:

  • La documentazione (anche il DocWiki) non è completa, e si noti affidabile
  • Non si può sovraccaricare il bit a bit senza operatore, come BitwiseNot non è supportato dal compilatore. Devi sovraccaricare l'operatore logico non in luogo.
  • operatori di sovraccarico a due a due, se del caso
  • essere a conoscenza di operatori esistenti
  • essere molto attenti in sede di attuazione operatori impliciti

Spero che questo ti aiuta. Fammi sapere se hai bisogno di maggiori informazioni: ho svolto un bel po 'di lavoro di produzione con l'overloading dell'operatore.

--jeroen

+0

Grazie - ora che me lo dici, ho visto le tue diapositive prima. Tutto sommato una buona panoramica. È un peccato che la comunità Delphi debba documentarlo; Mi sarei aspettato una documentazione ancora più approfondita da CodeGear/Embarcadero. – PatrickvL

+0

Ho bisogno di trovare il tempo per avere un sacco di roba on-line prima, quindi aggiornare i Wiki giusti. –

+0

Un bit non è 'AnInteger XOR -1' – Johan

Problemi correlati