Что такое нелокальное возвращение? - PullRequest
11 голосов
/ 17 января 2012

Что такое не местный возврат?В каких сценариях это полезно?Пожалуйста, приведите пример, чтобы объяснить.

Ответы [ 2 ]

11 голосов
/ 17 января 2012

Вот хорошая статья об использовании нелокальных возвратов в контексте блоков ruby.

Блоки Ruby поддерживают non-local-return (некоторые ссылки), что означает что возврат из блока ведет себя идентично возвращению из исходный контекст блока.

Это в основном означает, что вы можете вызвать блок из функции, и блок имеет возможность вернуться из исходной функции.

5 голосов
/ 17 января 2012

Это означает выход из функции и окончание где-то еще, кроме того места, где была вызвана функция. Он в основном используется для обозначения исключений (т. Е. try, throw и catch в Java и C ++), но также может означать такие механизмы, как setjmp/longjmp в C.

...