gpt4 book ai didi

for-loop - 在 for 循环中修改计数器

转载 作者:行者123 更新时间:2023-12-02 02:56:01 29 4
gpt4 key购买 nike

我对这种行为感到惊讶(在 Julia 中)

for i in 1:10
println(i)
i=i+4
end

打印:

1
2
...
9
10

(不考虑循环体中i的修改)

在 C/C++ 中

for(int i=1;i<=10;i++) {
std::cout << "\n" << i;
i+=4;
}

你会得到:

1
6

阅读 Julia doc:iteration ,我意识到 for 循环

for i = I   # or  "for i in I"
# body
end

肯定转化为:

state = start(I)
while !done(I, state)
(i, state) = next(I, state)
# body
end

在那种情况下,我们理解 i不考虑修改。一切都取决于 state 变量。

问题 1:我的解释是否正确?

问题 2:state 变量似乎对用户不可访问/隐藏。因此,构造如

for i in 1:10
println(i)
i=i+4
end

使用 for 循环 似乎是不可能的。这是正确的吗?

(我知道我可以使用 while i<=n 循环)

最佳答案

问题1:是的,其实和python一样:

for i in range(10):
print(i)
i=i+4

输出 0,1,2,...9。

julia 中的几个概念受到了 python 的影响。下面是对 python 迭代器的解释:

Julia 的 start, next, done 等同于 Python 的 __iter__ 方法,next 并引发 StopIteration 异常。

问题 2:如果循环以 for i in 1:3 开始,则变量状态确实不可访问。

关于for-loop - 在 for 循环中修改计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49436115/

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