如何在 Julia 中跳出嵌套的 for 循环
How to break out of nested for loops in Julia
我试图以一种非常无效的方式打破嵌套循环:
BreakingPoint = false
a=["R1","R2","R3"]
b=["R2","R3","R4"]
for i in a
for j in b
if i == j
BreakingPoint = true
println("i = $i, j = $j.")
end
if BreakingPoint == true; break; end
end
if BreakingPoint == true; break; end
end
有更简单的方法吗?在我的实际问题中,我不知道数组 a
和 b
中的内容,除了它们是 ASCIIString
之外。数组名称(示例代码中的 a
和 b
)也是通过元编程方法自动生成的。
将 2D 循环放入一个函数中,并在需要时尽早 return
break
。
你可以做以下两件事之一
在多外循环中有循环语句(如果它是这样叫的)
for i in a, j in b
if i == j
break
end
end
这是干净的,但并不总是可能的
我会因为提出这个建议而被钉在十字架上,但你可以使用@goto 和@label
for i in a
for j in b
if i == j
@goto escape_label
end
end
end
@label escape_label
如果您使用@goto/@label 方式,为了人们 maintaining/reviewing 代码,请正确记录您的使用,因为使用标签导航代码非常烦人
关于多循环中断的讨论,见this
我试图以一种非常无效的方式打破嵌套循环:
BreakingPoint = false
a=["R1","R2","R3"]
b=["R2","R3","R4"]
for i in a
for j in b
if i == j
BreakingPoint = true
println("i = $i, j = $j.")
end
if BreakingPoint == true; break; end
end
if BreakingPoint == true; break; end
end
有更简单的方法吗?在我的实际问题中,我不知道数组 a
和 b
中的内容,除了它们是 ASCIIString
之外。数组名称(示例代码中的 a
和 b
)也是通过元编程方法自动生成的。
将 2D 循环放入一个函数中,并在需要时尽早 return
break
。
你可以做以下两件事之一
在多外循环中有循环语句(如果它是这样叫的)
for i in a, j in b
if i == j
break
end
end
这是干净的,但并不总是可能的
我会因为提出这个建议而被钉在十字架上,但你可以使用@goto 和@label
for i in a
for j in b
if i == j
@goto escape_label
end
end
end
@label escape_label
如果您使用@goto/@label 方式,为了人们 maintaining/reviewing 代码,请正确记录您的使用,因为使用标签导航代码非常烦人
关于多循环中断的讨论,见this