Sovraccarico del metodo Delphi e parametri predefiniti
Come funzionano il sovraccarico e i parametri predefiniti in Delphi

Funzioni e procedure sono una parte importante della lingua Delphi. A partire da Delphi 4, Delphi ci consente di lavorare con funzioni e procedure che supportano i parametri predefiniti (rendendo i parametri opzionali) e consente a due o più routine di avere lo stesso nome ma funzionare come routine completamente diverse.
Vediamo come l'overloading e i parametri predefiniti possono aiutarti a programmare meglio.
Sovraccarico
In poche parole, l'overloading sta dichiarando più di una routine con lo stesso nome. Il sovraccarico ci consente di avere più routine che condividono lo stesso nome, ma con un diverso numero di parametri e tipi.
A titolo di esempio, consideriamo le seguenti due funzioni:
|_+_|
Queste dichiarazioni creano due funzioni, entrambe denominate SumAsStr, che accettano un numero diverso di parametri e sono di due tipi diversi. Quando chiamiamo una routine sovraccaricata, il compilatore deve essere in grado di dire quale routine vogliamo chiamare.
Ad esempio, SumAsStr(6, 3) chiama la prima funzione SumAsStr, perché i suoi argomenti sono a valori interi.
Nota: Delphi ti aiuterà a scegliere l'implementazione giusta con l'aiuto del completamento del codice e dell'analisi del codice.
D'altra parte, considera se proviamo a chiamare la funzione SumAsStr come segue:
|_+_|
Otterremo un errore che dice: ' non esiste una versione sovraccaricata di 'SumAsStr' che può essere chiamata con questi argomenti. ' Ciò significa che dovremmo includere anche il parametro Digits utilizzato per specificare il numero di cifre dopo il punto decimale.
Nota: C'è solo una regola quando si scrivono routine sovraccaricate, ovvero che una routine sovraccaricata deve differire in almeno un tipo di parametro. Il tipo restituito, invece, non può essere utilizzato per distinguere tra due routine.
Due unità - una routine
Diciamo che abbiamo una routine nell'unità A e l'unità B usa l'unità A, ma dichiara una routine con lo stesso nome. La dichiarazione nell'unità B non ha bisogno della direttiva di sovraccarico: dovremmo usare il nome dell'unità A per qualificare le chiamate alla versione di A della routine dall'unità B.
Considera qualcosa del genere:
|_+_|
Un'alternativa all'utilizzo di routine sovraccaricate consiste nell'usare parametri predefiniti, che di solito si traducono in meno codice da scrivere e mantenere.
Parametri predefiniti/opzionali
Per semplificare alcune affermazioni, possiamo dare un valore predefinito per il parametro di una funzione o procedura, e possiamo chiamare la routine con o senza il parametro, rendendolo opzionale. Per fornire un valore predefinito, terminare la dichiarazione del parametro con il simbolo uguale (=) seguito da un'espressione costante.
Ad esempio, vista la dichiarazione
|_+_|le seguenti chiamate di funzione sono equivalenti.
|_+_| |_+_|Nota: I parametri con valori predefiniti devono trovarsi alla fine dell'elenco dei parametri e devono essere passati per valore o come const. Un parametro di riferimento (var) non può avere un valore predefinito.
Quando si chiamano routine con più di un parametro predefinito, non possiamo saltare i parametri (come in VB):
|_+_|Sovraccarico con parametri predefiniti
Quando si utilizza sia l'overloading di funzioni o procedure sia i parametri predefiniti, non introdurre dichiarazioni di routine ambigue.
Considera le seguenti dichiarazioni:
|_+_|La chiamata alla procedura DoIt come DoIt(5.0), non viene compilata. A causa del parametro predefinito nella prima procedura, questa istruzione potrebbe chiamare entrambe le procedure, poiché è impossibile dire quale procedura deve essere chiamata.