Skip to main content
iKeyboard

Swift: aggiungere metodi e proprietà a un oggetto

L’extension è una funzionalità di Swift che può tornare utile quando vogliamo aggiungere metodi o proprietà a un oggetto.

Il paradigma della programmazione a oggetti permette di estendere tramite subclassing una classe in modo da aggiungere funzionalità ma non sempre possiamo ricorrere a questa tecnica. Vediamo alcuni esempi:

  1. L’oggetto a cui vogliamo aggiungere funzionalità è di una classe dichiarata final
  2. Non vogliamo creare una sottoclasse ma di fatto aggiungere la funzionalità all’oggetto già presente
  3. L’oggetto non è di tipo class ma di tipo struct (le struct non supportano l’ereditarietà)

Stringhe

In Swift la struct String espone il metodo toInt()->Int? che tenta di convertire il valore testuale in un intero.

Potrebbe essere comodo avere un metodo analogo toBool() -> Bool? che tenti di trasformare il valore testuale in un valore booleano.

In Swift le stringhe sono rappresentate dalla struct String. Perciò non possono essere estese. Ma soprattutto vogliamo che la nuova funzionalità sia disponibile direttamente nella struct String nativa.

La soluzione è creare un extension.

Con il codice precedente abbiamo aggiunto il metodo toBool() -> Bool? a String. La funzionalità è ora disponibile automaticamente tutte le volte che usiamo una stringa.

Approfondimenti

Quando scriviamo un extension possiamo accedere a tutte le proprietà e metodi non private dell’oggetto che stiamo estendendo.

Inoltre possiamo aggiungere non solo un metodo ma una computed property.

Con il codice precedente abbiamo aggiunto una computed property che assume valore true quando la stringa attuale è completamente lowercase.

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

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