在Groovy的GString中的Elvis操作符

时间:2015-04-16 14:21:35

标签: groovy closures gstring

String someMethod(def columnOne, int number, columnName){
     return columnOne + '-' + number + "${ -> (columnName == '') ?: '-' + columnName}"
}

当我打电话给:

someMethod('one', 2, '')

我得到以下结果:

one-2true

为什么闭包返回true而不是''-somehting

2 个答案:

答案 0 :(得分:4)

你不需要这里的猫王,而是普通的三元,就像这样:

(columnName ? '-'+columnName : '')

猫王是x ?: y =>的缩写。 x ? x : y以及columnName==''的结果只是true,这将打印出来。

答案 1 :(得分:1)

充分利用groovy的GString。字符串连接很昂贵。

return "$columnOne-$number${columnName ? '-' + columnName : ''}"