Значение counter
после пяти ваших звонков в incrementCounter
закрытия будет 5
, но возвращение каждого вызова incrementCounter
будет, казалось бы, «лаг» один шаг позади. Как пишет Sulthan в своем ответе, это связанно с x++
будучи оператором пост-инкремента: результат выражения будет возвращен перед к приращению
var x = 0
print(x++) // 0
print(x) // 1
Кроме того, как я написал в моем комментарии выше , вы не должны использовать операторы ++
и --
, так как они будут deprecated in Swift 2.2 and removed in Swift 3. Однако, если вы заинтересованы в деталях оператора post-vs pre-increment, вы можете найти здесь хорошие ответы на SO, помеченные на другие языки, но охватывающие один и тот же объект, например.
Стоит отметить, однако, точка, что является отношение к Swift> 2.1, однако, и что на самом деле не относятся к оператору ++
конкретно.
При запуске Замыкание incrementCounter
в
var someOne : Int = 0
let incrementCounter = {
someInt
}
Крышку неявно INFERRED быть типа () -> Int
: замыкание принимает нулевые аргументы, но с одним возвращением типа Int
.
let incrementCounter:() -> Int = {
return someInt
}
Таким образом, казалось бы, что вы «видеть» в вас игровой площадке неиспользованное (не присвоено) возвращаемое значение вызова incrementCounter
закрытия; то есть результат выражения incrementCounter()
.

В то время как значение counter
действительно никогда не печатается в правом блоке вашей игровой площадке (если вы пропишите строку, где результат этой строки: ■ выражение counter
).
счетчика ++ может перевести на counter = counter + 1 или counter + = 1 – Shai
Обратите внимание, что операторы '++' и '--' [будут устаревать в Swift 2.2 и удалены в Swift 3] (https://github.com /apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md). – dfri
Не беспокойтесь о ++ и -. Эти операторы устарели и будут удалены из swift 3. – user965972