++和+ = 1完全相同吗?

hie*_*trq 27 macos swift xcode7 swift2

我只是切换到Swift几天,我注意到后缀和前缀++和 - 将在Swift 3中删除.我做了一些研究,根据Swift网站上的公告,运算符++和 - 将替换为+ = 1和 - = 1.链接此处Swift 2.2中的新功能

我有一段代码可以使用旧版本的Swift工作得很好.当我从return counter1++原始代码更改为,return counter1 += 1并弹出一个错误说

没有'+ ='候选者产生预期的上下文类型'Int'

这是我的例子

func countingCounter() -> (() -> Int){
    var counter1 = 0
    let incrementCounter1: () -> Int = {
        return counter1+=1   //original is counter1++
    }
return incrementCounter1
}
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题,但仍然坚持.

Laf*_*fen 18

它在Apple文档中明确说明,为方便起见,复制到此处:

注意

复合赋值运算符不返回值.例如,你不能写let b = a += 2.

不,++运营商不一样+=.


Wai*_*ain 8

不,它们不相同,++和 - 递增(或递减)和返回,+ =和 - =以简单阅读简短形式添加(或减去)金额,但它们不返回任何内容.

因此,您需要将值更改与值使用分开.这实际上是弃用的全部内容 - 使代码更易于阅读和维护.


Wal*_*rat 8

正如我在评论中所说的那样你现在必须写它来替换postfix ++.另一种方法是使用中间变量,如果你不喜欢-1的东西.

let incrementCounter1: () -> Int = {
    counter1+=1   //original is counter1++
    return counter1-1;
}
Run Code Online (Sandbox Code Playgroud)

  • 该函数应该返回currentValue并将其递增1以便下次执行.这通常是++ postfix的用法,但由于它已被删除,你必须递增计数器并返回先前值. (2认同)