W najprostszym przypadku można zastąpić ++column
z column + 1
:
var column = 0
column = column >= 2 ? 0 : column + 1
Można również przepisać kod w IF- else instrukcja z operatorem +=
:
var column = 0
if column >= 2 {
column = 0
} else {
column += 1
}
Ponadto choć nie polecam go używać w kodzie produkcyjnym można reimplement ++
(operator prefix/postfix przyrost) oraz --
(prefix/postfix operatora ubytek) za typ Int
w Swift 2.2 i Swift 3 z custom operators , in-out parameters i 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
}
Jako przykład, po zabaw dla dzieci, który wykorzystuje kod operatora trójskładnikowego nie generuje ostrzeżenia szybkimi 2,2 i szybkie 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
Jest przy kod, który nie był miły . 'column = ++ column' to straszna rzecz do powiedzenia. Właśnie dlatego operator jest zniesiony. – matt