Bye bye ++ con Swift 2.2
La settimana scorsa ha visto la luce iOS 9.3 e di conseguenza anche XCode viene aggiornato alla versione 7.3. Come annunciato in questo precedente articolo; ci si prepara alla rimozione degli operatori di auto-incremento/decremento che risultano già deprecati con Swift 2.2 incluso nell’aggiornamento dell’ultima versione della SDK per lo sviluppo.
Aprendo i nostri progetti dopo l’aggiornamento, troviamo già il warning: ‘++’ is deprecated: it will be removed in Swift 3.0.
Per prima cerchiamo di fare chiarezza su cosa sta succedendo: Il linguaggio Swift, che fa della “sicurezza” uno dei suoi punti di forza, ritiene che l’utilizzo degli operatori di auto-incremento e auto-decremento portino confusione e siano l’origine di alcuni errori nei nostri codici.
Per questa ragione ha deciso di deprecare questa sintassi in favore di una sintassi più “sicura” che non crei confusione e aiuti a prevenire errori spesso banali.
Gli operatori di auto-incremento (++) e auto-decremento (- -) sono quindi già stati deprecati in Swift 2.2 ed il loro utilizzo verrà assolutamente proibito nella versione 3.0
Partendo dal presupposto che utilizzare una sintassi del tipo:
anInt = anInt + 1
Non sia per niente elegante, come ci prepariamo a questo cambiamento?
È bene cominciare ad utilizzare gli operatori di incremento al posto degli operatori di auto-incremento in questo modo:
var anInt = 0 // Usiamo una variabile intera come esempio anInt += 1 // È come anInt++
Ovviamente lo stesso discorso è valido per le operazioni di decremento:
var anInt = 10 // Usiamo una variabile intera come esempio anInt -= 1 // È come anInt--
Abbiamo anche un ulteriore possibilità , l’utilizzo del metodo advancedBy()
:
var anInt = 0 // Usiamo ancora una variabile intera come esempio anInt.advancedBy(1) // Ci indica il valore di anInt incrementato di 1
Il metodo advancedBy()
ritorna il valore incrementato senza però alterare il valore della variabile:
var anInt = 10 let anotherInt = anInt.advancedBy(1) print(anotherInt) // 11 print(anInt) // 10
Per le operazioni di decremento possiamo utilizzare l’operatore -= oppure il metodo advancedBy()
con un valore negativo:
var anInt = 10 let anotherInt = anInt.advancedBy(-1) print(anotherInt) // 9 print(anInt) // 10