我目前正在将一个算法从Java移植到Julia,现在我遇到了一个部分,当满足某些条件时,我必须从内部循环继续外部循环:
loopC: for(int x : Y){
for(int i: I){
if(some_condition(i)){
continue loopC;
}
}
}我在GitHub上发现了一些关于这个话题的问题,但似乎只有一个讨论,还没有解决方案。有人知道如何在Julia中做到这一点吗?
发布于 2016-11-08 00:07:05
就像在其他一些语言中一样,julia使用break来完成以下操作:
for i in 1:4
for j in 1:4
if j == 2
break
end
end
end当j为2时,跳出内部循环
但是,如果您需要退出外部循环,可以使用@goto和@label,如下所示
for i in 1:4
for j in 1:4
if (j-i) == 2
@goto label1
end
if j == 2
@goto label2
end
do stuff
end
@label label2
end
@label label1直接从julia docs http://docs.julialang.org/en/release-0.5/manual/control-flow/
有时,在测试条件被篡改之前终止一段时间的重复,或者在到达可迭代对象的末尾之前停止
循环中的迭代是很方便的。这可以使用break关键字
来完成
发布于 2019-06-24 05:04:48
正如@isebarn所提到的,break可用于退出内部循环:
for i in 1:3
for j in 1:3
if j == 2
break # continues with next i
end
@show (i,j)
end # next j
end # next i
(i, j) = (1, 1)
(i, j) = (2, 1)
(i, j) = (3, 1)但是,需要注意,因为break的行为取决于嵌套循环的指定方式:
for i in 1:3, j in 1:3
if j == 2
break # exits both loops
end
@show (i,j)
end # next i,j
(i, j) = (1, 1) 请参阅https://en.wikibooks.org/wiki/Introducing_Julia/Controlling_the_flow#Nested_loops
也可以从包含内部循环的嵌套函数执行return操作,尽管很麻烦:
for i in 1:3
(i -> for j in 1:3
if j == 2
return
end
@show (i,j)
end)(i)
end
(i, j) = (1, 1)
(i, j) = (2, 1)
(i, j) = (3, 1)https://stackoverflow.com/questions/40469007
复制相似问题