Groovy映射的值是否可以自引用以进行插值?

问题描述 投票:1回答:1

我想知道我们是否可以使用它的其他键值条目在Groovy映射中插值。例如,

def ten = 10

def example = [
     a: "apple",
     b: "${ten} bats",
     c: "${example.b}" //or something like self.b
]

如果是这样,请告诉我如何完成这项工作?

groovy jenkins-groovy
1个回答
3
投票

正如评论中已经说明的那样,地图的字面意思很可能不允许这样做。但你可以使用tap(或with,如果你<2.5)非常接近你的代码,这允许在地图内查找事物(基本上这是你在哪里寻找的自我引用)

EG

def ten = "ten"

def map = [:].tap{
    a = "apple"
    b = "${ten} ${a}s"
}

assert map == [a:"apple", b:"ten apples"]

© www.soinside.com 2019 - 2024. All rights reserved.