我正在查看Xcode 7.3笔记,我注意到了这个问题。
++和 - 运营商已弃用
有人可以解释为什么它被弃用吗?我是对的,在新版本的Xcode中,您要使用++
这x += 1
;
例子:
for var index = 0; index < 3; index += 1 {
print("index is \(index)")
}
答案
A在这里进行完整的解释来自斯威夫特的创作者克里斯·拉特纳(Chris Lattner)。我将总结这些要点:
- 这是您学习迅速时必须学习的另一个功能
- 不比短多
x += 1
- Swift不是C.不应该只是为了取悦C程序员
- 它的主要用途是用于循环的C风格:
for i = 0; i < n; i++ { ... }
,Swift有更好的选择,例如for i in 0..<n { ... }
(循环的C风格是也出去) - 阅读和维护起来可能很棘手,例如,什么是值
x - ++x
或者foo(++x, x++)
? - 克里斯·拉特纳(Chris Lattner)不喜欢它。
对于那些感兴趣的人(并避免链接腐烂),用他自己的话说,拉特纳的原因是:
这些操作员增加了学习Swift作为第一种编程语言的负担,或者您尚未通过其他语言了解这些操作员的任何其他情况。
它们的表达优势最小 - X ++不比x+= 1短。
Swift已经偏离C,因为=, +=和其他类似分配的操作返回void(出于多种原因)。这些操作员与该模型不一致。
Swift具有强大的功能,可以消除您以其他语言使用C风格的++ i使用++ i的许多常见原因,因此这些功能相对较少地用于编写的Swift代码中。这些功能包括for-in循环,范围,枚举,地图等。
实际使用这些运算符的结果值的代码通常会使代码的读取器/维护器变得混淆和微妙。他们鼓励"过度棘手"的代码,这可能很可爱,但难以理解。
尽管Swift的评估顺序定义明确,但即使定义明确定义,依赖于foo(++ a,a ++)的任何代码也将是不受欢迎的。
这些操作员适用于相对较少的类型:整数和浮点标量,以及类似迭代的概念。它们不适用于复数,矩阵等。
最后,这些失败的指标是"如果我们还没有这些,我们会将它们添加到Swift 3吗?"