For-In Loops multiple conditions

拥有回忆 提交于 2019-12-01 16:24:04

问题


With the new update to Xcode 7.3, a lot of issues appeared related with the new version of Swift 3. One of them says "C-style for statement is deprecated and will be removed in a future version of Swift" (this appears in traditional for statements).

One of this loops has more than one condition:

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

}

My question is, is there any elegant way (not use break) to include this double condition in a for-in loop of Swift:

for i in 0 ..< 5 {

}

回答1:


It would be just as you're saying if you described it out loud:

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

That said, I suspect you really mean:

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

which is less error-prone than anything that requires subscripting.

It's possible you actually need an integer index (though this is rare), in which case you mean:

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

Or you could even get a real index if you wanted with:

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



回答2:


You can use && operator with where condition like

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



回答3:


Another way to do so would be like this

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



回答4:


One more example. Loop through all UILabel in subviews:

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



回答5:


Here’s a simple solution:

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

  // Loop body goes here

  x += 1
}


来源:https://stackoverflow.com/questions/36205371/for-in-loops-multiple-conditions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!