为什么这样做:
def batman_ironman_proc p = Proc.new { return "Batman will win!" } p.call "Iron Man will win!"endputs batman_ironman_proc # prints "Batman will win!"
但不是这个:
def batman_ironman_proc(p) p.call "Iron Man will win!"endp = Proc.new { return "Batman will win!" }puts batman_ironman_proc(p) # unexpected return解决方法 这是因为proc对控制流关键字的行为如何:return,raise,break,redo,retry等.
这些关键字将从定义proc的范围跳转,否则lambda有自己的范围,因此这些关键字将从lambda的范围跳转.
在第二个示例中,proc在main的范围内定义.正如tadman在下面评论的那样,你不能从主要回来,只有退出可用.
如果从proc切换到lambda,您的代码将起作用.
总结以上是内存溢出为你收集整理的ruby – 为什么调用在方法中声明的返回Proc工作?全部内容,希望文章能够帮你解决ruby – 为什么调用在方法中声明的返回Proc工作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)