Groovy 获取项目的地图值和 return 如果找到其他空白则带括号

Groovy get map value for item and return with parenthesis if found else blank

我想要一个查找列表,其中 return 是括号中找到的值(如果找到的话),否则 return 空白字符串。我不想使用枚举。

像这样:

def grt = { ['mail': 'Scanned Paper', 'digital': 'Digital Things', 'barcode': 'Some Barcode Matter'].get(it) }

def s = grt('digital') ? "($grt('digital')" : ''
println "Report $s"

但我想做得更简单,删除 'def s' 行,以便在 get(it) 的末尾有某种收集,并且都在一行上。我可以做猫王,但不放 ()

我什至可以进行元编程,例如:

Object.metaClass.prettyString = { delegate ? "($delegate)" : '' }

然后只需要做

println "Report $grt('digital').prettyString()"

一定有一种

.get(it).collect { it ? "($it)" : '' } 

但这不起作用。

这是一种在一行中完成的方法:

def grt = { 
    [
        'mail': 'Scanned Paper', 
        'digital': 'Digital Things', 
        'barcode': 'Some Barcode Matter'
    ][it].with { 
        delegate ? "($delegate)" : '' 
    }
}

println "Report ${grt('digital')}"

您可以在调用时提供默认值get

def grt = { 
    [
        'mail': 'Scanned Paper', 
        'digital': 'Digital Things', 
        'barcode': 'Some Barcode Matter'
    ].get(it, '')
}

println "Report ${grt('digital')}"