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 : ''}"