Skip to main content

I metodi max e min di Array in Swift

La struct Array in Swift offre i metodi max() e min().

Tuttavia (in modo simile a quanto visto ieri) questi metodi sono disponibili sono se il tipo generico dell’array è conforme al protocollo Comparable.

Vediamo un esempio.

Il codice precedente funziona correttamente perché l’array è di tipo Int e Int è conforme al protocollo Comparable.

Se invece scrivessimo

Otterremmo un errore perché l’array starships è di tipo Starship che non è conforme a Comparable.

Naturalmente possiamo rendere Starship conforme a Comparable (come descritto in precedenza) ma possiamo anche inserire la logica relativa all’ordinamento direttamente in una closure da passare al metodo max.

Immaginiamo, ad esempio, di voler ordinare starships usando l’ordine alfabetico del campo name, potremmo scrivere

Inoltre ricordiamo che per le closure che contengono una sola riga possiamo emettere la keyword return

E consideriamo anche che Swift, grazie alla type inference, è in grado di dedurre in automatico parametri di input e tipo di ritorno della nostra closure

Il risultato è

Trovare il numero più lontano da un certo intero

Il metodo max che riceve in input una closure è disponibile per gli array di qualsiasi tipo. Torniamo al nostro array di interi

Potremmo voler ottenere il valor che più sia distante da 3

E quindi stamparlo

Trovare il numero più vicino a una certo intero

Usando la logica precedente possiamo sostituire la chiamata al metodo max con il metodo min per ottenere l’intero più vicino al valore 3

O se preferite la versione più compatta

 

 

 

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

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