gpt4 book ai didi

'for' 循环的 Swift 编译器优化

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:06 25 4
gpt4 key购买 nike

我有一个与此类似的“for”循环:

for i in 0...n - 1 {
// do stuff, n is not changed
}

以前,当我用 FORTRAN 编写代码时,有人告诉我这是编写大型“for”循环的一种非常低效的方法。

Swift 编译器是否识别不变的限制并预先计算 n - 1?

最佳答案

我认为答案是肯定的。

1...n - 1代表 Range目的。它是 Range 的文字.因此,当编译到达循环并看到字面量时,它认为

It seems like that you want to create a new Range<Int> object! Here you go! Hmm... So I guess i is of type Int...

等等。

这意味着n - 1在创建对象时进行评估。它保持这种状态,而不是第二次评估它。此代码通过不只打印一个 hello 来证明这一点:

var n = 10
for i in 1...n - 1 {
n = 2
print("Hello")
}

是的。

注意:

  • 最好用1..<n而不是 1...n - 1在这种情况下,它们是相同的。
  • Apple 实际上建议您使用这种方法而不是 C 风格的 for 循环。
  • C 风格的 for 循环将在 Swift 3 中被移除

关于 'for' 循环的 Swift 编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111869/

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