gpt4 book ai didi

swift - 如何在 Swift 2.2+ 中编写非 C 类 for 循环?

转载 作者:IT王子 更新时间:2023-10-29 05:46:51 25 4
gpt4 key购买 nike

我已经更新了 Xcode (7.3) 并且有很多变化; C-like for 表达式将被弃用。举个简单的例子,

for var i = 0;  i <= array.count - 1;  i++
{
//something with array[i]
}

如何编写这个清晰简单的类 C 语言 for 循环以符合新的变化?

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 for 循环(适用于 for 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
}

最佳答案

charl 的(旧)答案会崩溃。你要0..<array.count :

for index in 0..<array.count {
// ...
}

如果您想要类似 i 的东西/j循环你可以使用 stride得到 i的继任者:

for i in 0.stride(through: array.count, by: 1) {
let j = i.successor()
// ...
}

只要确保检查 i.successor()以防你出界。

关于swift - 如何在 Swift 2.2+ 中编写非 C 类 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36155700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com