Groovy-Collection只返回一个值

Groovy-Collection只返回一个值,groovy,Groovy,我有一个小的代码片段,它循环遍历一个节点并获取其所有属性。 如果我设置一个变量来获取属性值(除了它周围有一个奇怪的[]),我就可以实现这一点。但是我不想要多余的代码,所以我尝试在循环中设置多个属性,除了返回一个值之外,它不会在所有节点上循环 工作 String selectNodeLabel = null selectNodeLabel = JcrUtils.getChildNodes("links").collect{ it.getProperty("label").getString(

我有一个小的代码片段,它循环遍历一个节点并获取其所有属性。 如果我设置一个变量来获取属性值(除了它周围有一个奇怪的[]),我就可以实现这一点。但是我不想要多余的代码,所以我尝试在循环中设置多个属性,除了返回一个值之外,它不会在所有节点上循环

工作

String selectNodeLabel = null
selectNodeLabel = JcrUtils.getChildNodes("links").collect{ 
  it.getProperty("label").getString()
}
单个值

String selectNodeLabel = null
String selectNodeMeta = null
String selectNodeFooter= null
String topicNode = null

topicNode = JcrUtils.getChildNodes("links").collect{ 
  selectNodeLabel = it.getProperty("label").getString()
  selectNodeMeta = it.getProperty("meta").getString()
  selectNodeFooter = it.getProperty("footer").getString()
}
谢谢你的帮助

试试看:

def nodeList = JcrUtils.getChildNodes("links").collect{ 
  [ selectNodeLabel  : it.getProperty("label").getString()
    selectNodeMeta   : it.getProperty("meta").getString()
    selectNodeFooter : it.getProperty("footer").getString() ]
}
然后,
nodeList
将是一个映射列表,因此您可以执行以下操作:

println nodeList*.selectNodeLabel
例如,要打印所有
值,请选择NodeLabel

来解释代码中的问题。。。Collect创建闭包返回的元素列表。单值代码所做的是覆盖
selectNode…
变量中的值,然后将
topicNode
设置为
JcrUtils.getChildNodes(“链接”)中每个元素的闭包返回的值


在这种情况下,
topicNode
将包含一个
it.getProperty(“footer”).getString()
(因为它是闭包中的最后一行

查看和从来都不是一个坏主意。我可以得到关于否决票的解释吗?请,我很乐意修复任何问题。