作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我已经更新了 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/
我是一名优秀的程序员,十分优秀!