如何在Swift 2.2中编写非C类for循环?
发布时间:2020-12-14 05:33:19 所属栏目:百科 来源:网络整理
导读:我更新了 Xcode(7.3)并且有很多变化;表达式的C-like将被弃用.举个简单的例子, 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
我更新了
Xcode(7.3)并且有很多变化;表达式的C-like将被弃用.举个简单的例子,
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 = 0 while 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 = 0 var j = 1 while 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循环丢弃代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |