What is non local return? In what scenarios it is useful? Please give an example to explain.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
It means exiting a function and ending up someplace else beside where the function was called. It's primarily used to refer to exceptions (i.e., try
, throw
, and catch
in Java and C++), but it can also mean mechanisms like setjmp/longjmp
in C.
回答2:
Here's a good article on the use of non local returns in the context of ruby blocks.
Ruby’s blocks support non-local-return (some references), which means that a return from the block behaves identically to returning from the block’s original context.
It basically mean that you can call a block from a function, and the block has the ability to return from the original function.