我有一个过滤器循环,用于将列表项与嵌套对象项进行比较:
processArticlesNumbers :
processArticlesNumbers = ["1", "2", "3"]
articlesMap :
[Business_Unit1:
[Supplier1:
["2", "5", "8"],
Supplier2:
["2", "5", "8"]
],
Business_Unit2:
[Supplier3:
["2", "5", "8"],
Supplier4:
["2", "5", "8"]
],
]
我想过滤出值并将不匹配的值分配给具有相同结构(expiredAndNewArticlesMap
)的新对象。
当前,我收到以下错误:
expiredAndNewArticlesMap。$({-> ...})。$({--...})“是方法调用 表达式,但它应该是变量表达式
def articlesMap = checkNewAndExpiredArticles()
def expiredAndNewArticlesMap = [:]
articlesMap.each { businessUnit, articlesInfo ->
articlesInfo.each { supplier, supplierArticles ->
supplierArticles.each { articleNumber ->
println articleNumber
if (!processArticlesNumbers.contains(articleNumber)) {
if (expiredAndNewArticlesMap.${businessUnit}){
if (expiredAndNewArticlesMap.${businessUnit}.${supplier}) {
expiredAndNewArticlesMap.${businessUnit}.${supplier}.add(articleNumber)
} else {
def list = []
// ERROR appears here
expiredAndNewArticlesMap.${businessUnit}.${supplier} = list
expiredAndNewArticlesMap.${businessUnit}.${supplier}.add(articleNumber)
}
} else {
expiredAndNewArticlesMap.${businessUnit} = [supplier: []]
expiredAndNewArticlesMap.${businessUnit}.${supplier}.add(articleNumber)
}
}
}
}
}
如何为嵌套对象分配值?
答案 0 :(得分:2)
要从字符串名称访问任意属性,您需要使用类似以下的GString:
expiredAndNewArticlesMap."${businessUnit}"
和
expiredAndNewArticlesMap."${businessUnit}"."${supplier}"
您还可以通过按键以更清晰的方式访问地图:
expiredAndNewArticlesMap[businessUnit]
当您要从包含字符串的变量中分配特定键时,需要将其用括号括起来:
expiredAndNewArticlesMap."${businessUnit}" = [(supplier): []]