修改for循环

时间:2018-03-22 18:36:36

标签: for-loop iteration 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 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循环)

1 个答案:

答案 0 :(得分:1)

问题1 :是的,它实际上与python中的相同:

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

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

朱莉娅的几个概念受到了蟒蛇的影响。 以下是python迭代器的解释:

Julia的startnextdone等同于Pythons __iter__方法,next并提升StopIteration例外。

问题2 :如果循环以for i in 1:3开头,则无法访问变量状态。