作者:Thomas Hanning 原文链接
C样式的循环将会在 Swift 3 中被移除。一开始看到似乎有点奇怪,但是 Swift 提供了更好的循环结构。
C样式的循环
让我们先来看看C样式的循环:
let programmingLanguages = ["Swift","Objective-C","Java"]
for var i = 0; i < programmingLanguages.count; i++ {
print("index: \(i), value: \(programmingLanguages[i])")
}
这段代码运行没问题,但是它既不好用也不够 “swifty”。实际上,它不太容易学习和记忆。
For-in 循环
for-in
循环提供了足够多功能来实现同样的目的。不过我们还是先来看看一个简单的版本:
for language in programmingLanguages {
print("value: \(language)")
}
同样可以运行,但是有个小问题:你没法访问索引。某些情况下这已经足够了,但是有些时候你确实需要索引。没问题,我们可以通过使用 元祖
和 enumerate()
方法来解决:
for (index,language) in programmingLanguages.enumerate() {
print("index: \(index), value: \(language)")
}
我们要的都有了。而且我觉得这个比C样式的循环更加易读。
还有字典呢?也很简单。
let plattformLanguages = ["Android":"Java","iOS":"Swift"]
for (key,value) in plattformLanguages {
print("key: \(key), value:\(value)")
}
这里我们甚至不需要访问字典里面的函数。直接使用 for-in
和 元祖
来实现。
Swift 3
当然你仍然可以去争论在 Swift 3 中移除C样式的循环是否是一个好的想法。一方面你需要重写现有的代码而且只有 for-in
一个选择,但是另一方面这会强制开发者使用一个循环样式,所以我认为这是不错的改变。
你呢?你觉得在 Swift 3 中移除C样式的循环是一个好的想法吗?欢迎在下面评论!