Ridefinire un Operatore in Swift

Swift ci permette di ridefinire il comportamento di alcuni operatori (come ad esempio +, -, /, *) in modo da renderli compatibili con altri tipi di dato.

Al momento possiamo ad esempio scrivere

In questo caso Swift esegue l’operatore + tra 2 Int.

Box

Immaginiamo ora di definire un nostro tipo di dato come segue

Creiamo ora 2 valori di tipo Box nelle quali inseriamo rispettivamente alcuni numeri primi e alcuni numeri pari.

Ora vogliamo poter sommare 2 Box per ottenerne una nuova che avrà

  • name: campo name della prima box concatenato al campo name della seconda box
  • values: tutti gli elementi della prima Box + tutti gli elementi della seconda

Proviamo a usare l’operatore +

Swift ci sta dicendo che l’operatore + non può essere applicato a 2 Box<Int>.

Ridefinire +

Bene, allora definiamo come l’operatore + deve comportarsi quando applicato a 2 Box

La firma della funzione ci garantisce che sarà possibile sommare solo Box avente lo stesso tipo generic. Infatti stiamo dichiarando un tipo generic E e poi stiamo richiedendo che entrambi i parametri di tipo Box avranno E come tipo generic.

Quindi 2 Box<Int> oppure (ad esempio) 2 Box<String>.

Invece non sarà possibile sommare (ad esempio) una Box<Int> con una Box<String>.

Proviamo di nuovo a sommare le primeNumbers con evenNumbers

Adesso il codice viene eseguito correttamente e otteniamo il seguente risultato

Conclusione

L’utilizzo degli operatori permette di scrivere codice più essenziale e leggibile. Tuttavia è bene non abusare di questa tecnica per non rendere il codice poco comprensibile a chi dovrà esaminare il nostro codice.

Come sempre potete chiedere chiarimenti usando i commenti qui sotto e condividere questo articoli con i pulsanti social se l’avete trovato utile.

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *