免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2408 | 回复: 1
打印 上一主题 下一主题

主题:关于proc中包含break的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-01 22:03 |只看该作者 |倒序浏览
主题:关于proc中包含break的问题


通常代码块中如果包含break,在遇到break后,程序会返回到迭代器,然后返回到迭代器之外;而proc类似于代码块,也应该遵照这个规则,但是为什么我实验了一下却不行呢?



Ruby代码  
def test1   
    3.times {|x| p x; break}      
    p "end of test1"     # 顺利执行   
end  
  
test1   
  
def test2   
    p2 = Proc.new {|x| p x; break;}   
      
    p "before calling p2"  
      
    3.times &p2   
      
    puts "after calling p2"    # 不能执行,且抛出LocalJumpError   
      
end  
  
test2  

def test1
        3.times {|x| p x; break}       
        p "end of test1"     # 顺利执行       
end

test1

def test2
        p2 = Proc.new {|x| p x; break;}
       
        p "before calling p2"
       
        3.times &p2
       
        puts "after calling p2"    # 不能执行,且抛出LocalJumpError
       
end

test2



test2的最后一行表达式在Ruby1.9.1中不执行且抛出LocalJumpError,而在Jruby1.6.4(按照Ruby1.9通用)中,则不执行也不报错;

论坛徽章:
0
2 [报告]
发表于 2011-11-02 23:01 |只看该作者
谢谢 楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP