Groovy 中最接近 Elvis 运算符的逆运算是什么?

Ada*_*dam 2 groovy

所以我可以替换旧的三元操作:

def something = mainThing != null ? mainThing : "gone!"
Run Code Online (Sandbox Code Playgroud)

使用 Elvis 运算符:

def something = mainThing ?: "gone!"
Run Code Online (Sandbox Code Playgroud)

但是有没有一种很好的方法来代替相反的方法:

def keyValuePair = (mainThing != null ? mainThing + "." : "") + "specific=" + value
Run Code Online (Sandbox Code Playgroud)

如果前缀存在,我在哪里使用前缀加一个点?

ern*_*t_k 6

您可以使用?. 安全导航运算符来简化该表达式。当前使用的运算符 ( +) 使这几乎不相关,但假设方法访问(这也碰巧更常见),您可以键入:

def keyValuePair = mainThing?.concat('.') ?: "" + "specific=" + value
Run Code Online (Sandbox Code Playgroud)

使用.concat代替+字符串连接[您可以使用.plus():-)],然后使用?:. mainThing?.concat('.')如果mainThing为假(通过 Groovy 真值术语),则返回 null,如果不是,则返回方法调用的结果。

  • 应该注意的是,`def something = mainThing ?: "gone!"` 将返回 `gone!` 如果 `mainThing` 为 null,*或空字符串*。 (2认同)