gpt4 book ai didi

swift - 用于递增和递减循环的新 Swift for-in 语法

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:48 24 4
gpt4 key购买 nike

长话短说;为什么 Swift 范围运算符不处理递减范围?

我有这样的代码:

for var i = 0; i < previousPage; i += 1 {
purgePage(i)
}

swift 编译器建议我更改为 new Swift for loop语法:

C-style for statement is deprecated and will be removed in a future version of Swift
Fix-it Replace "var i = 0; i < previousPage; i += 1" with "i in 0 ..< previousPage"

生成的代码现在看起来像这样:

// Purge previous non-visible pages.
for i in 0 ..< previousPage {
purgePage(i)
}

问题是现在应用程序崩溃了,因为 previousPage 可以是负整数或正整数,形成递增或递减的范围。当范围减小时,我得到 EXC_BAD_INSTRUCTION:

fatal error: Can't form Range with end < start

如何使新语法适用于我的情况?添加代码来检查 previousPage 的值似乎是对旧语法的倒退。

最佳答案

Why doesn't the Swift range operator handle decreasing ranges?

我相信我读过 Swift 团队成员(可能是 @jckarter)的声明,他们故意设计了 Range以这种方式避免程序员错误的可能来源。原因通常是,当您从变量(而不是文字)创建范围时,例如 a..<b ,你会隐含地假设 a <= b . Range旨在捕捉是否违反该假设以使(可能的)错误对您显而易见。

不过我目前找不到引用资料。

关于swift - 用于递增和递减循环的新 Swift for-in 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843076/

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