++已被弃用,将在Swift 3中被移除。

13

++ 在 Swift 3 中将被弃用。

变量 ++ 现在可以写成:

variable += 1

我应该如何重写++variable

请回忆一下++variablevariable++语法之间的区别。


没有区别。重要的不是你说什么,而是你何时说。如果 理解 ++variablevariable++ 之间的区别,那么这很明显。如果不理解,请阅读我现在已经修改得非常乏味的答案。 - matt
阅读此链接:https://dev59.com/iGQm5IYBdhLWcg3wwxLF?answertab=votes#tab-top。在Swift中也适用。 - Akaino
阅读此内容:https://dev59.com/ploV5IYBdhLWcg3wgu5H - Zigii Wong
@matt:我还是不明白。为什么你投票“关闭问题,因为不清楚你在问什么”?- 你在问题被提出后2分钟就回答了,所以对你来说肯定是清楚的。 - Martin R
2个回答

33

请将其改写为:

variable += 1

...就像警告信息所建议的那样。当然,现在这将需要成为一行独立的文本(这是这种更改唯一的不好之处)。重要的是把那行文本放在哪里


因此,例如:

let otherVariable = ++variable // variable is a previously defined var

现在变成

variable += 1 // variable is _still_ a previously defined var
let otherVariable = variable

但另一方面

let otherVariable = variable++ // variable is a previously defined var

现在变成

let otherVariable = variable
variable += 1 // variable is _still_ a previously defined var

专业提示:在极少数情况下,当您使用 return variable++ 时——也就是说,您返回了一个在更高作用域中的变量 variable,然后再将它递增——您可以像这样解决这个问题:

defer {
    variable += 1
}
return variable

1
我认为作者在问关于不同语法 ++varvar++。第一个变量应该如何修复? - sage444
6
同样的方法。它非常简单易懂。问题在于++不是这样的;这就是为什么它正在被废除的原因。大多数人甚至不理解前缀递增和后缀递增之间的区别。所以现在你只需要在有意义的时候递增即可。 - matt
2
@vadian,我认为这就是Matt的观点。return index ++的行为是微妙的,对于一些不够有经验的开发人员来说很可能无法理解。为了清晰起见,微妙是不好的。 - Duncan C
2
@OmarBizreh https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md - matt
哇,这真是相当不错的 :-) - vadian
显示剩余5条评论

1
你可以在上一行写 variable += 1。通过在之前递增来实现前缀递增。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接