【发布时间】:2016-05-10 15:41:01
【问题描述】:
我在 swift 代码中遇到了一个我不太理解的变化。
var arr = []
for var i = 1; i <= arr.count; i += 1
{
print("i want to see the i \(i)")
}
我有一个程序可以获取一个也可以为空的结果数组。上面的 for 循环没有问题。 现在苹果希望我将代码更改为以下内容。但是如果数组为空,这将崩溃。
var arr = []
for i in 1...arr.count
{
print("i want to see the i \(i)")
}
在执行循环之前,我真的必须先检查范围吗?
var arr = []
if (arr.count >= 1){
for i in 1...arr.count
{
print("I want to see the i \(i)")
}
}
有更聪明的解决方案吗?
【问题讨论】:
-
您确定要
0..<arr.count考虑基于 0 的索引吗?如果你只是迭代元素,那么使用for element in arr -
... 这也解决了您的问题,因为
0..<0是一个空范围,因此不会输入您的循环体。 -
... 它基本上在 Swift 手册的第 2 页上:developer.apple.com/library/ios/documentation/Swift/Conceptual/…
-
或者如果您必须从 1 开始,
for i in 1 ..< arr.count + 1 {将执行您的循环执行的操作。 -
“现在苹果想让我改变”......我对此表示怀疑。 :)