加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

循环 – 你如何在groovy中嵌套迭代器?

发布时间:2020-12-14 16:37:06 所属栏目:大数据 来源:网络整理
导读:groovy是否支持任何类型的嵌套迭代器符号? 在下面的例子中,我想以某种方式获取来自外部迭代器的projectName值到我的内部迭代器中。这是否可能没有存储在变量中?在我的例子中,我得到一个没有找到“project”的runtuime错误 it.myprojects.project.each{ p
groovy是否支持任何类型的嵌套迭代器符号?

在下面的例子中,我想以某种方式获取来自外部迭代器的projectName值到我的内部迭代器中。这是否可能没有存储在变量中?在我的例子中,我得到一个没有找到“project”的runtuime错误

it.myprojects.project.each{
     println("Project name: " + it.projectName)
    it.myroles.role.each{
         Role role = new Role()
             role.setName(project.projectName)//how do I get projectName here without storting it in a variable in the outer loop?
    }
}

解决方法

感觉这样应该工作:

it.myprojects.project.each{ project->
     println("Project name: " + project.projectName)
     it.myroles.role.each{
         Role role = new Role()
         role.setName(project.projectName)
    }
}

另外,您可以使用所有者变量引用外部封闭

it.myprojects.project.each{ 
     println("Project name: " + it.projectName)
     it.myroles.role.each{
         Role role = new Role()
             role.setName(owner.projectName)
    }
}

但是,如果您似乎正在做的是创建Role类的新实例,我没有看到迭代角色的原因。也许这样的事情会更简单:

it.myprojects.project.each{ 
     println("Project name: " + it.projectName)
     it.myroles.role.size().times {
         Role role = new Role()
         role.setName(owner.projectName)
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读