Groovy ConfigSlurper使用具有相同键的嵌套值导致错误结果
我试图在projetct中使用Groovy的ConfigSlurper,但当同一个键在配置中出现两次时,它碰巧有一个奇怪的行为。以下是一个例子:Groovy ConfigSlurper使用具有相同键的嵌套值导致错误结果,groovy,Groovy,我试图在projetct中使用Groovy的ConfigSlurper,但当同一个键在配置中出现两次时,它碰巧有一个奇怪的行为。以下是一个例子: def struct = """ node2 { subnode21="Test1" } root1 { node2 { subnode1="Test2" subnode2=node2.subnode21 } } """ de
def struct = """
node2 {
subnode21="Test1"
}
root1 {
node2 {
subnode1="Test2"
subnode2=node2.subnode21
}
}
"""
def config = new ConfigSlurper().parse(struct)
这将产生以下结果:
[
node2:[
subnode21:Test1
],
root1:[
node2:[
subnode1:Test2,
subnode21:[:],
subnode2:[:]
]
]
]
配置SurrPurp似乎认为,ROOT1闭包中的子节点2= NoDE2.SubNoDE21是ROOT1.NODE2,而不是上面声明的NoDE2闭包。
这是一个已知的限制还是我遗漏了什么?我认为您不应该将引用用作右值,而应该仅使用值。我的意思是,node2.subnode21在=的右边是不允许的,从那时起我已经查看了类的代码,是的,它是允许的,因为值实际上被解析并替换为正确的值。问题是我是否正确理解了堆栈用于密钥研究,这意味着第一个匹配的密钥将始终是同一对象中的密钥。