Swift 对于多个条件中的循环

Swift 对于多个条件中的循环,swift,xcode7.3,swift3,Swift,Xcode7.3,Swift3,随着Xcode 7.3的更新,出现了许多与新版本Swift 3相关的问题。其中一人说,“C-style for语句已被弃用,并将在未来版本的Swift中删除”(这出现在传统的for语句中) 其中一个循环具有多个条件: for i = 0; i < 5 && i < products.count; i += 1 { } 如果你把它大声描述出来,就会像你说的那样: for i in 0 ..< min(5, products.count) { ... } 它比

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

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

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

}

如果你把它大声描述出来,就会像你说的那样:

for i in 0 ..< min(5, products.count) { ... }
它比任何需要订阅的东西都不容易出错

您可能实际上需要一个整数索引(尽管这很少见),在这种情况下,您的意思是:

for (index, product) in products.enumerate().prefix(5) { ... }
或者,如果您愿意,您甚至可以获得一个真正的索引:

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

另一种方法是这样做

for i in 0 ..< 5 where i < products.count {
}
用于0..<5中的i,其中i
您可以将
&
运算符与
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
设arr=[1,2,3,4,5,6,7,8,9]
对于1中的i…arr.count,其中i<5{
印刷品(一)
}
//输出:-1234
对于1…100中的i,其中i>40&&i<50&&i(i%2==0){
印刷品(一)
}
//输出:-42444648

这里有一个简单的解决方案:

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

  // Loop body goes here

  x += 1
}
var x=0
while(x
再举一个例子。循环浏览子视图中的所有UILabel:

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

你的回答完美地说明了苹果为什么要删除C风格的
for
语句:因为还有其他更快捷的方法来完成同样的事情,而且人们通常只使用老式的
for
语句来迭代数组。非常完整的回答!谢谢有了这两个,第一个对我来说就足够了。关于最后两个答案(都有编译错误):在第三个答案中,enumerate是一个方法,而在第四个答案中,“类型范围的值没有成员zip”,因此该方法似乎不存在于该类型。非常感谢!修正了语法。感谢您的关注。是否可以在where?@ScottyBlades之后添加可选绑定?我认为我们不能在这里使用
let
语句,但是,我们可以使用
!=此处为nil
,或者如果您试图检查类类型,则可以使用
is
以及
object is ui按钮
var x = 0
while (x < foo.length && x < bar.length) {

  // Loop body goes here

  x += 1
}
for label in view.subviews where label is UILabel {
    print(label.text)
}