如果第一个赋值在Groovy中不存在,如何给变量赋值?

ssm49v7z  于 2022-12-11  发布在  其他
关注(0)|答案(2)|浏览(191)

我有一个情况,我想得到一个readJson的输出,并将其分配给变量,但我想检查是否存在不同的键,以防第一个键不存在。在这里,如果键“名称”不存在,那么我想检查是否存在“地址”,并将其添加为集合。下面的wig适用于键“名称”,但我想检查“地址”,以防没有“json对象中的名称kry

def originals = readJSON text: sourceStagesText        
  originalconfign = originals.collectEntries { [(it.Name):it] }.asImmutable()

我厌倦了使用||运算符,但它给出的是true和false值,而不是true或false,我如何分配给变量赋值的命令的值,例如

originalconfign = (originals.collectEntries { [(it.Name):it] }.asImmutable() || originals.collectEntries { [(it.address):it] }.asImmutable())

如果originalconfign发现Name与name匹配,如果没有,则与address匹配,我如何将该值分配给originalconfign?

jaxagkaj

jaxagkaj1#

我用if else statment解决了这个问题,但请让我知道是否有人有更好的短期选择来实现这个目标:

if (originals.collectEntries { [(it.Name):it] }.asImmutable()){
originalconfig = originals.collectEntries { [(it.Name):it] }.asImmutable()
} else {
originalconfig = originals.collectEntries { [(it.address):it] }.asImmutable()
}
cwtwac6a

cwtwac6a2#

这与您的代码相对应,只是稍短一些:

originalconfig = originals.collectEntries { [it.Name,it] }.asImmutable() ?: originals.collectEntries { [it.address,it] }.asImmutable()

我觉得你的逻辑有问题。第二部分只有在第一部分返回null或空map时才有效。但如果第一部分为空,第二部分总是返回空map ...

相关问题