Nel caso più semplice, è possibile sostituire con ++column
column + 1
:
var column = 0
column = column >= 2 ? 0 : column + 1
Si può anche riscrivere il codice in un se: altra dichiarazione con un operatore +=
:
var column = 0
if column >= 2 {
column = 0
} else {
column += 1
}
Inoltre, anche se non mi consiglia di usarlo nel codice di produzione, è possibile reimplementare ++
(operatore prefisso/suffisso incremento) e --
(prefisso/suffisso decremento dell'operatore) per il tipo Int
a Swift 2.2 e Swift 3 con custom operators , in-out parameters e defer statement.
// Swift 2.2
prefix operator ++ {}
prefix operator -- {}
postfix operator ++ {}
postfix operator -- {}
prefix funC++(inout a: Int) -> Int {
a += 1
return a
}
prefix func --(inout a: Int) -> Int {
a -= 1
return a
}
postfix funC++(inout a: Int) -> Int {
defer { a += 1 }
return a
}
postfix func --(inout a: Int) -> Int {
defer { a -= 1 }
return a
}
// Swift 3
prefix operator ++
prefix operator --
postfix operator ++
postfix operator --
@discardableResult prefix funC++(a: inout Int) -> Int {
a += 1
return a
}
@discardableResult prefix func --(a: inout Int) -> Int {
a -= 1
return a
}
@discardableResult postfix funC++(a: inout Int) -> Int {
defer { a += 1 }
return a
}
@discardableResult postfix func --(a: inout Int) -> Int {
defer { a -= 1 }
return a
}
A titolo di esempio, il seguente codice di parco giochi che utilizza operatore ternario genera nessun avviso con Swift 2.2 e Swift 3:
var a = 10
print(a++) // prints 10
print(a) // prints 11
var b = 10
print(--b) // prints 9
print(b) // prints 9
var column = 0
column = column >= 2 ? 0 : ++column
print(column) // prints 1
fonte
2016-04-01 14:13:45
E 'il codice originale che non era bello . 'column = ++ column' è una cosa terribile da dire. Questo è esattamente il motivo per cui l'operatore è stato abolito. – matt