我对这种行为感到惊讶(在朱莉娅)
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 loop
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
次修改。一切都取决于州变量。
问题1:我对这个解释是对的吗?
问题2: 状态变量似乎无法访问/隐藏给用户。结果,像
这样的结构for i in 1:10
println(i)
i=i+4
end
带有 for循环的似乎不可能。这是对的吗?
(我知道我可以使用while i<=n
循环)
答案 0 :(得分:1)
问题1 :是的,它实际上与python中的相同:
for i in range(10):
print(i)
i=i+4
输出0,1,2,... 9。
朱莉娅的几个概念受到了蟒蛇的影响。 以下是python迭代器的解释:
Julia的start
,next
,done
等同于Pythons __iter__
方法,next
并提升StopIteration
例外。
问题2 :如果循环以for i in 1:3
开头,则无法访问变量状态。