For-In循环多个条件

时间:2016-03-24 16:35:05

标签: swift xcode7.3 swift3

随着Xcode 7.3的新更新,出现了许多与Swift 3新版本相关的问题。其中一个问题是“C-style for statement已被弃用,将在未来版本的Swift中删除”(这个出现在传统的for语句中。

其中一个循环有多个条件:

for i = 0; i < 5 && i < products.count; i += 1 {

}

我的问题是,是否有任何优雅的方式(不使用break)将此双重条件包含在Swift的for-in循环中:

for i in 0 ..< 5 {

}

5 个答案:

答案 0 :(得分:14)

如果你大声描述的话,那就像你说的那样:

for i in 0 ..< min(5, products.count) { ... }

那就是说,我怀疑你真的意味着:

for product in products.prefix(5) { ... }

比任何需要下载的内容都更不容易出错。

你可能真的需要一个整数索引(虽然这种情况很少见),在这种情况下你的意思是:

for (index, product) in products.enumerate().prefix(5) { ... }

或者你甚至可以得到一个真正的索引,如果你想:

for (index, product) in zip(products.indices, products).prefix(5) { ... }

答案 1 :(得分:13)

您可以&&运算符使用where条件,如

let arr = [1,2,3,4,5,6,7,8,9]

for i in 1...arr.count where i < 5  {
    print(i)
}
//output:- 1 2 3 4

for i in 1...100 where i > 40 && i < 50 && (i % 2 == 0) {
     print(i)
}
//output:- 42 44 46 48

答案 2 :(得分:5)

另一种方法就是这样

for i in 0 ..< 5 where i < products.count {
}

答案 3 :(得分:1)

再举一个例子。在子视图中循环浏览所有UILabel:

for label in view.subviews where label is UILabel {
    print(label.text)
}

答案 4 :(得分:-1)

这是一个简单的解决方案:

var x = 0
while (x < foo.length && x < bar.length) {

  // Loop body goes here

  x += 1
}