リスト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) }
ここで何が問題なのですか?