虽然有很多答案,而且它们都很清晰,但我添加了这个片段来向您展示如何使用“新”语法替换您的代码,其中++和--已被弃用。首先是您自己的代码。
var counter = 0
let incrementCounter = {
counter++
}
let i0 = incrementCounter()
let i1 = incrementCounter()
如何在未来的Swift语法中重写它?让我们尝试推荐的替代方法...
var counter = 0
let ic = {
counter += 1
}
let i0 = ic()
let i1 = ic()
但是现在ic()的结果是Void!嗯...好的,下一次尝试可能会像这样
var counter = 0
let ic = {
counter += 1
return counter
}
但是现在代码编译时出错了:无法推断当前上下文中的闭包返回类型 :-),因此我们必须声明它(在原始版本中不需要)
var counter = 0
let ic:()->Int = {
counter += 1
return counter
}
let i0 = ic()
let i1 = ic()
它可以工作,但结果不同。这是因为在原始代码中使用了++运算符作为后缀递增运算符。因此,我们需要对我们的“新”版本进行另一种调整。
var counter = 0
let ic:()->Int = {
let ret = counter
counter += 1
return ret
}
let i0 = ic()
let i1 = ic()
是的,我希望在未来版本的Swift中也能看到我熟悉的一元运算符++和/或--。
++
和--
运算符在 Swift 2.2 中将被弃用,并在 Swift 3 中被移除。 - dfrib