for var i = 0; i <= array.count - 1; i++ { //something with array[i] }
如何编写这个清晰简单的C-like for-loop以符合新的变化?
for var i = 0,j = 1; i <= array.count - 2 && j <= array.count - 1; i++,j++{ //something with array[i] and array[j]}
更新.
还有一个变种
for var i = 0; i <= <array.count - 1; i++{ for var j = i + 1; j <= array.count - 1; j++ { //something with array[i] and array[j] }}
和更多 …
for var i = 0,j = 1,g = 2; i <= array.count - 3 && j <= array.count - 2 && g <= array.count - 1; i++,j++,g++{ //something with array[i] and array[j] and array[g]}
Update2经过几次建议,while循环是优选的,所有情况的通用替换比C-like for-loop的简单示例更复杂(适用于in表达式).不需要每次都寻找新的方法.
例如:而不是
for var i = 0; i <= <array.count - 1; i++{ for var j = i + 1; j <= array.count - 1; j++ { //something with array[i] and array[j] }}
我可以用
var i = 0while i < array.count{ var j = i + 1 while j < array.count { //something with array[i] and array[j] j += 1 } i += 1}最坏的情况是,您可以将其转换为while循环.
var i = 0var j = 1while i <= array.count -2 && j <= array.count - 1 { // something i += 1 j += 1}
– 编辑 –
因为你说过,“while循环是所有情况的优选通用替换比C-like for-loop的简单例子更复杂”……我觉得有必要扩展我的答案.我不想对一堆坏代码负责……
在大多数情况下,有一个简单的for-in循环可以处理这种情况:
for item in array { // do something with item } for (item1,item2) in zip(array,array[1 ..< array.count]) { // do something with item1 and item2 } for (index,item1) in array.enumerate() { for item2 in array[index + 1 ..< array.count] { // do soemthing with item1 and item2 } }
对于你的最后一种情况,你可能有理由使用for look,但这是一个非常罕见的边缘情况.
不要使用for循环丢弃代码.
总结以上是内存溢出为你收集整理的如何在Swift 2.2中编写非C类for循环?全部内容,希望文章能够帮你解决如何在Swift 2.2中编写非C类for循环?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)