我有一个列表def vrs=["6.0","6.1","6.1.0"]
(版本),我在一个函数中得到了一个带有这个值的地图def test=[version:6.1 HotFix11]
。
如何检查test
'version
值是否与列表匹配vrs
?
我试过这个vrs.each{ver-> println test.version.contains(ver)}
,但它给了Exception in thread "main" java.lang.StackOverflowError
更新
事实证明,我的代码有问题。我在一个小的 Groovy 脚本中尝试了测试用例,它可以工作。
这是完整的代码:
private Map params
private def root
private def nineBelow
XmlHandler(String xml)
{
nineBelow=["6.0","6.1","6.1.0"]
params=[:]
root=new XmlParser().parseText(xml)
}
def getParams()
{
if(root.product.version.size()>0)
{
params.version=root.product.version.text()
}
/*nineBelow.each {
println params.version //even this throws java.lang.StackOverflowError
//println "$it , ${params.version}"
//println ver.getClass()+", "+params.version.getClass()
}*/
println nineBelow.each{ver-> println params.version.contains(ver)}
/*I need to check whether `params.version` matches with `nineBelow` list, so i'll check for condition here*/
params
}
另一个调用的类getParams()
static main(args) {
String fileContents = new File('E://Projects/agent6.1.xml').text
XmlHandler xm=new XmlHandler(fileContents)
def params=xm.getParams()
println params
}
更新
甚至println nineBelow.each { println params.version}
给我Exception in thread "main" java.lang.StackOverflowError
更多更新
它仅在以下代码之后才起作用
def ver=params.version
println nineBelow.each { println ver.contains(it) }
这里有什么问题?