いろいろあるぜ大域(ネスト)脱出
例外処理による大域脱出(複数のネストから脱出)が標準的な方法だと思ったら、じつはそんな面倒なことをしなくても各言語で色々と大域脱出の手法があるらしい、ということがわかったので、まとめてみる。
言語 | 脱出方法 | 説明 |
---|---|---|
Java | break [ラベル名]; | ラベル名を設定しておくと、breakやcontinueでそこにジャンプできる |
PHP | break [抜けるネストの数]; | for(...){for(...){for(...){ ... break 2; ...}}}とすると、2つのforループを抜けられる。breakで抜けるネスト全てに関して使える。 |
Ruby | 例外処理 | (あとで書く) |
Scheme | call/cc | (あとで書く) |
ここに挙げたのは、あくまでネストから脱出するだけなので、本当の意味での大域脱出をするには、例外処理しかないんじゃないかと思う。
間違いの指摘歓迎。