Groovy 中 GString 中的 Elvis 运算符
Elvis operator in GString in Groovy
String someMethod(def columnOne, int number, columnName){
return columnOne + '-' + number + "${ -> (columnName == '') ?: '-' + columnName}"
}
当我调用它时:
someMethod('one', 2, '')
我得到以下结果:
one-2true
为什么闭包returnstrue
而不是''
或-somehting
这里不需要elvis,需要常规的三元,像这样:
(columnName ? '-'+columnName : '')
Elvis 是 x ?: y
=> x ? x : y
的缩写,columnName==''
的结果就是 true
,这将打印出来。
充分利用groovy的GString。字符串连接很昂贵。
return "$columnOne-$number${columnName ? '-' + columnName : ''}"
String someMethod(def columnOne, int number, columnName){
return columnOne + '-' + number + "${ -> (columnName == '') ?: '-' + columnName}"
}
当我调用它时:
someMethod('one', 2, '')
我得到以下结果:
one-2true
为什么闭包returnstrue
而不是''
或-somehting
这里不需要elvis,需要常规的三元,像这样:
(columnName ? '-'+columnName : '')
Elvis 是 x ?: y
=> x ? x : y
的缩写,columnName==''
的结果就是 true
,这将打印出来。
充分利用groovy的GString。字符串连接很昂贵。
return "$columnOne-$number${columnName ? '-' + columnName : ''}"