代替使用:
for (n = 1; n <= 5; n++) {
print(n)
}
为什么我们在Swift中使用以下构造?
for n in 1...5 {
print(n)
}
//输出:1 2 3 4 5
答案 0 :(得分:2)
“我当然愿意考虑放弃C样式的for循环。 IMO,这是Swift很少使用的功能 重量。删除它们的许多原因与基本原理一致 用于删除-和++。 “
-克里斯·拉特纳(Chris Lattner)
有人建议增加https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md
这些操作员增加了学习Swift的负担 编程语言-或您不知道的任何其他情况 这些运算符使用不同的语言。
它们的表达优势极小-x ++比x短很多 + = 1。
Swift已经偏离了C,因为=,+ =和其他 类似赋值的操作会返回Void(出于多种原因)。 这些运算符与该模型不一致。
Swift具有强大的功能,可消除许多常见原因 您可能会在其他语言中以C风格使用++ i for循环,所以这些是 在编写良好的Swift代码中相对较少使用。这些 功能包括for-in循环,范围,枚举,映射等。
实际使用这些运算符的结果值的代码通常是 会使代码的阅读器/维护者感到困惑和微妙。他们鼓励 “过于棘手”的代码可能很可爱,但很难理解。
尽管Swift具有明确定义的评估顺序,但任何代码 依赖它(例如foo(++ a,a ++))即使它 定义明确。
这些运算符适用于相对较少的类型:整数和 浮点标量和类似迭代器的概念。他们不适用 到复数,矩阵等。
最后,这些不符合“如果我们还没有这些, 我们会将它们添加到Swift 3吗?”
关于循环
https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md
for-in和stride都使用 快速一致的方法,而不必与传统术语捆绑在一起。
使用for循环存在明显的表达劣势 与简洁相比
for循环实现不适合与 集合和其他核心Swift类型。
for循环鼓励使用一元增量器和减量器, 它将很快从该语言中删除。
以分号分隔的声明提供了陡峭的学习曲线 来自非类C语言的用户
如果for循环不存在,我怀疑它将被考虑用于 包含在Swift 3中。