首页 > 解决方案 > 最接近 Groovy 中 Elvis 运算符的反面的是什么?

问题描述

所以我可以替换旧的三元运算:

def something = mainThing != null ? mainThing : "gone!"

使用猫王运算符:

def something = mainThing ?: "gone!"

但是有没有一种时髦的方法来代替它的反面:

def keyValuePair = (mainThing != null ? mainThing + "." : "") + "specific=" + value

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

标签: groovy

解决方案


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

def keyValuePair = mainThing?.concat('.') ?: "" + "specific=" + value

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


推荐阅读