Groovy闭包中return的坑

一直沉浸在Groovy的强大和方便中,稍微不注意就被坑了一把。

在each方法中return相当于Java循环中的continue,只会终止当前闭包中的代码,继续下一次循环。并不会跳出循环外的方法。

实际应用中代码的逻辑往往比前面的两段示例更复杂,如果测试不够全面,结果会很惨。

Java的保守也有好处,简单易懂,不容易出错。Groovy的闭包虽然方便,也容易埋下隐患。

boolean hasValueGreaterThan(list,min){
  list.each{
    if(it>min){
      //这个return因为在闭包中,相当于for循环中的continue,终止当前循环中的代码,进行下一次循环,并不会返回hasValueGreaterThan方法的结果
      return true;
    }
  }

boolean hasValueGreaterThan(list,min){
  for(int i=0;i<list.size();i++){
    if(list.get(i)>min){
      //要用for循环,才能正常返回
      return true;
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • groovy是什么 Groovy 是下一代的Java语言,跟java一样,它也运行在 JVM 中。 作为跑在JVM...
    ronaldo18阅读 3,975评论 0 4
  • 什么是 Groovy? 简言之,Groovy是一种基于JVM(Java虚拟机)的敏捷动态开发语言。它是一种成熟的面...
    北纬26阅读 9,570评论 0 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • “举头望明月,低头思故乡” 越长大,越觉得家人很是重要,想想爸爸妈妈把自己拉扯大,是费了多少心。小时候自己不懂事,...
  • 你想吃羊肋排,是从第一眼看到它开始的。 加点孜然,加点辣椒,嗯好像不够,再小心翼翼地倾倒一点,你心中完美的羊肋排,...
    GODDAMNAsh阅读 3,003评论 0 0