Swift 对';对于';循环

Swift 对';对于';循环,swift,for-loop,Swift,For Loop,我有一个类似于此的“for”循环: for i in 0...n - 1 { // do stuff, n is not changed } 回到那天,当我用FORTRAN编写代码时,我被告知这是一种非常低效的编写大型“for”循环代码的方法 Swift编译器是否能识别不变极限并预先计算n-1?我认为答案是肯定的 1…n-1表示一个范围对象。它是范围的文本。因此,当编译到达循环并看到文本时,它会思考 似乎您想创建一个新的范围对象!干得好!隐马尔可夫模型。。。所以我猜I属于Int类型 等

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

for i in 0...n - 1 {
    // do stuff, n is not changed
}
回到那天,当我用FORTRAN编写代码时,我被告知这是一种非常低效的编写大型“for”循环代码的方法


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

我认为答案是肯定的

1…n-1
表示一个
范围
对象。它是
范围
的文本。因此,当编译到达循环并看到文本时,它会思考

似乎您想创建一个新的
范围
对象!干得好!隐马尔可夫模型。。。所以我猜
I
属于
Int
类型

等等

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

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

注:


  • 最好使用
    1..很容易找到:用某个函数替换
    n
    ,并检查调用该函数的频率…最好使用
    0..这是我的意见。。。更快捷,使用更少的字符,而且不含糊@MartinRIf
    n==0
    然后
    0。。。n-1会因运行时异常而中止,但
    0..
    不会(并执行循环体零次)。有些吹毛求疵:
    1…n-1
    不是文本。它是应用于整数文本
    1
    和表达式
    n-1
    ..
    运算符的结果。谢谢大家。我喜欢这个