如何Groovy-ify空检查?

时间:2014-07-30 14:20:13

标签: syntax groovy null-check

还有更多" Groovy"编写这个Groovy代码的方法:

def myVar=(System.getProperty("props") == null)?
    null : System.getProperty("props")

逻辑是:

  • 如果System.getProperty("props")为NULL,我希望props为NULL;
  • 否则,我希望propsSystem.getProperty("props")
  • 的值

1 个答案:

答案 0 :(得分:10)

通常对于空值检查我到达?:(elvis运算符,如果左侧为空或者解析为false则返回默认值)或?.(安全导航,计算结果为null)如果左侧为空)。如果要设置在属性不存在时使用的默认值,可以执行以下操作:

def myVar = System.properties['props'] ?: 'mydefaultvalue'

将myVar设置为' mydefaultvalue'如果在System.properties中找不到任何关键字' props' (或者如果返回的值解析为false)。但是,因为您的案例中的默认值为null,所以

def myVar = System.properties['props']

也可以完成这项工作,因为当找不到给定键的任何内容时,则返回null。

这里的Groovy -ifications是:

  • 如果您不需要GroovyString插值,则首选单引号字符串为双引号字符串

  • 对地图和列表使用带括号括号的语法(而不是' get'或' put')

  • 如果getter没有参数,则使用shortened property form(不带get前缀)(与Java不同,Groovy实现universal access principle); System.getProperty(String)对Java程序员来说很方便,但在Groovy中不需要它

  • 使用?:

  • 缩短default-if-null案例

使用||

在Ruby和JavaScript中找到这个习惯用法
def myVar = System.properties['props'] || 'mydefaultvalue'

不起作用。布尔测试的结果是布尔值,因此myVar设置为true。