我正在查看Xcode 7.3笔记,我注意到了这个问题。

++和 - 运营商已弃用

有人可以解释为什么它被弃用吗?我是对的,在新版本的Xcode中,您要使用++x += 1;

例子:

for var index = 0; index < 3; index += 1 {
    print("index is \(index)")
}

Screenshot for warning

答案

A在这里进行完整的解释来自斯威夫特的创作者克里斯·拉特纳(Chris Lattner)。我将总结这些要点:

  1. 这是您学习迅速时必须学习的另一个功能
  2. 不比短多x += 1
  3. Swift不是C.不应该只是为了取悦C程序员
  4. 它的主要用途是用于循环的C风格:for i = 0; i < n; i++ { ... },Swift有更好的选择,例如for i in 0..<n { ... }(循环的C风格是也出去
  5. 阅读和维护起来可能很棘手,例如,什么是值x - ++x或者foo(++x, x++)
  6. 克里斯·拉特纳(Chris Lattner)不喜欢它。

对于那些感兴趣的人(并避免链接腐烂),用他自己的话说,拉特纳的原因是:

  1. 这些操作员增加了学习Swift作为第一种编程语言的负担,或者您尚未通过其他语言了解这些操作员的任何其他情况。

  2. 它们的表达优势最小 - X ++不比x+= 1短。

  3. Swift已经偏离C,因为=, +=和其他类似分配的操作返回void(出于多种原因)。这些操作员与该模型不一致。

  4. Swift具有强大的功能,可以消除您以其他语言使用C风格的++ i使用++ i的许多常见原因,因此这些功能相对较少地用于编写的Swift代码中。这些功能包括for-in循环,范围,枚举,地图等。

  5. 实际使用这些运算符的结果值的代码通常会使代码的读取器/维护器变得混淆和微妙。他们鼓励"过度棘手"的代码,这可能很可爱,但难以理解。

  6. 尽管Swift的评估顺序定义明确,但即使定义明确定义,依赖于foo(++ a,a ++)的任何代码也将是不受欢迎的。

  7. 这些操作员适用于相对较少的类型:整数和浮点标量,以及类似迭代的概念。它们不适用于复数,矩阵等。

最后,这些失败的指标是"如果我们还没有这些,我们会将它们添加到Swift 3吗?"

来自: stackoverflow.com