Groovy 上的三元快捷方式

Gid*_*eon 2 groovy

我知道三元运算符本身已经是一个快捷方式,但我仍然想知道是否有这样的快捷方式groovy

String typeFilter = (params?.type) ? params.type : ""
Run Code Online (Sandbox Code Playgroud)

我在这里尝试做的是:

“如果HashMap params有一个type键,则将该键的值分配给typeFilter,否则,分配typeFilter一个空字符串”

我在想是否可以避免输入params?.type两次,或者这是我给定场景的最短代码?感谢您的反馈意见。

def*_*tus 5

您刚刚有效地描述了 elvis 运算符:

String typeFilter = params.type ?: ""
Run Code Online (Sandbox Code Playgroud)

更多相关信息:http : //docs.groovy-lang.org/latest/html/documentation/#_elvis_operator

只要确保您了解 Groovy 的真相 ( http://mrhaki.blogspot.com/2009/08/groovy-goodness-tell-groovy-truth.html ),尤其是在涉及0vs nullvs的价值时empty。考虑一下:

params.age = 0
...
// elsewhere in the code
params.age = params.age ?: 6 // if no age provided default to 6
Run Code Online (Sandbox Code Playgroud)

这将设置params.age6尽管 if 已经用0!