我有一个代码,我需要在其中使用eval.有时我需要退出eval代码,但我的尝试会导致错误.
例如:
# expected to see 1, 2 and 5; not 3 nor 4; and no errors
eval "puts 1; puts 2; return; puts 3; puts 4" # => Error: unexpected return
puts 5
Run Code Online (Sandbox Code Playgroud)
我试着用return,end,exit,break,,我不能得到成功.exit不会引起错误,但是我没有得到5.
(注意:我知道这eval是邪恶的,但在这种情况下我需要使用它.)
谢谢大家,但我找到了最适合我的问题的解决方案:
lambda do
eval "puts 1; puts 2; return; puts 3; puts 4"
end.call
puts 5
Run Code Online (Sandbox Code Playgroud)
这样return里面就可以使用直观的关键字eval来成功的从中出来了。
end在这种情况下,我不喜欢类似条件的解决方案,因为它会迫使我(或用户)在末尾添加一个。
关于使用throw/catchor break,我认为return关键字更直观。
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |