In Swift 4.1 potrebbe essere ottenuto in questo modo:
prefix operator ++
postfix operator ++
extension Int{
static prefix func ++(x: inout Int)->Int{
x += 1
return x
}
static postfix func ++(x: inout Int)->Int{
x += 1
return x-1
}
}
//example:
var t = 5
var s = t++
print("\(t) \(s)")
Si noti che nonostante questa soluzione sia simile alle soluzioni precedenti in questo post, non funzionano più in Swift 4.1 e questo esempio funziona. Si noti inoltre che chiunque sopra menziona che + = è un sostituto di ++ semplicemente non capisce completamente l'operatore poiché ++ combinato con l'assegnazione è in realtà due operazioni, quindi un collegamento. Nel mio esempio:var s = t++
fa due cose: assegna il valore di t a se quindi incrementa t. Se ++ viene prima, sono le stesse due operazioni eseguite in ordine inverso. A mio avviso, il ragionamento di Apple sul perché rimuovere questo operatore (menzionato nelle risposte precedenti), non è solo un ragionamento falso, ma credo inoltre che sia una bugia e il vero motivo è che non sono stati in grado di far gestire il proprio compilatore. Ha dato loro problemi nelle versioni precedenti, quindi hanno rinunciato. La logica di "operatore troppo complicato per capire, quindi rimosso" è ovviamente una bugia perché Swift contiene operatori molto più complicati e molto meno utili che non sono stati rimossi. Inoltre, la stragrande maggioranza dei linguaggi di programmazione ce l'ha. JavaScript, C, C #, Java, C ++ e molti altri ancora. I programmatori lo usano felicemente. Per chi è troppo difficile capire questo operatore per,
La strategia alla base di Swift è semplice: Apple ritiene che il programmatore sia stupido e quindi dovrebbe essere trattato di conseguenza.
La verità è che Swift, lanciato a settembre 2014, doveva ormai essere da qualche altra parte. Altre lingue sono cresciute molto più velocemente.
Posso elencare molti errori importanti nel linguaggio, da quelli gravi: come gli array incollati per valore e non per riferimento, a quelli fastidiosi: le funzioni dei parametri variadici non possono accettare un array che è l'idea alla base. Non penso che i dipendenti di Apple possano nemmeno guardare altre lingue come Java, quindi non sanno nemmeno che Apple è indietro di anni luce. Apple avrebbe potuto adottare Java come linguaggio, ma oggigiorno la sfida non è la tecnologia, ma l'ego lo è. Se avessero aperto IntelliJ per scrivere un po 'di Java, avrebbero sicuramente chiuso la loro attività capendo che a questo punto, non possono e non potranno mai recuperare.