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')}"
我想要一个查找列表,其中 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')}"