gpt4 book ai didi

swift - 具有相同索引名称的嵌套循环

转载 作者:行者123 更新时间:2023-11-28 15:59:27 25 4
gpt4 key购买 nike

在下面的嵌套循环中:

for i in 0..<2 {
print(i)
for i in 0..<2 {
print(i)
}
}

输出应该是:

0
0
1

但是它会产生:

0
0
1
1
0
1
我在苹果文档中找不到任何涉及索引 (i) 范围的内容。我将不胜感激来自官方来源的任何引用或解释。

最佳答案

当您定义一个循环for X in ...时,您定义的是在每次迭代期间存在的范围和存在于该范围内的常量。我找不到范围的明确文档,除了 do {} 的情况,但文档确实假设在谈到诸如 guard 声明。实际上,这就是单个循环中 i 的范围。

// Scope that i doesn't exist in.

for i in 1..<2 {
// Scope that i exists in.
}

// Scope that i doesn't exist in.

在定义嵌套作用域(您的内部 for 循环所在的作用域)时,您可以重新定义变量和常量。这就是在循环声明中定义 i 时发生的情况。在内部循环中,编译器通过范围向外查找定义。

i 的情况下,它会在内部循环中查找并找到它。在 print 的情况下,使用的标识符,它会在内循环、外循环、任何包含虚构的循环中查找,然后是类,然后是模块,然后是导入的模块,直到找到 Swift.print

关于swift - 具有相同索引名称的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292505/

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