catch(tag) {|tag| .... }
运行块并返回它的值。若在块的运行过程中,遇到与 tag 同名的 throw 的话,将把 throw 的第二参数的值作为返回值。
嵌套的循环不会因为遇到 break 就一下子跳出。这时可使用 catch。
catch(:loop1) {
for i in 1..2
for j in 1..2
throw :loop1, j
end
end
}
callcc do |cont|
loop do
loop do
loop do
# ...
# 跳转到最外层
cont.call
end
end
end
end
p '跳出了所有循环'
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |