Skip to main content

Ordinare un Array di Person

La struct Array in swift fornisce delle funzioni che ci permettono di ordinarlo.

Nell’esempio che segue usiamo sorted() per creare un nuovo array ordinato.

Possiamo anche ordinare l’array originale, ma in questo caso dovremo dichiararlo come var e non come let.

Le stesse funzioni possono essere utilizzate su Array di altri tipi come ad esempio String o Double. Ma se volessimo ordinare un array composto di valori di un tipo che abbiamo definito?

Array di Person

Immaginiamo di definire la seguente struct

Ora creiamo un array

Cerchiamo adesso di ottenerne una nuova versione ordinata

Il metodo sorted non è disponibile in un array di Person mentre invece era disponibile in un array di Int. Come mai?

Questo accade perché Int è un tipo conforme al protocollo Comparable. Quindi dati 2 valori di tipo Int, Swift è in grado di determinare quale è precedente all’altro.

Il tipo Person non è conforme a Comparable quindi Swift non è in grado di determinare quale tra 2 Person sia quella che ha la precedenza nell’ordinamento.

Rendere Person conforme a Comparable

Proviamo allora a indicare a Swift come ordinare 2 Person. Aggiungiamo questo codice subito dopo la definizione di Person.

Come vedete abbiamo implementando la funzione == e < abbiamo reso 2 valori di tipo Person comparabili. Adesso Swift è in grado di determinare quale tra 2 Person ha la precedenza.

Torniamo al nostro array, adesso il metodo sorted è disponibile e ci permette di ordinare il nostro array di Person.

 

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

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