有没有更“Groovy”的方式来编写这个 Groovy 代码:
def myVar=(System.getProperty("props") == null)?
null : System.getProperty("props")
逻辑是:
- 如果
System.getProperty("props")
是NULL,我想props
是NULL; - 否则,我想
props
成为System.getProperty("props")
有没有更“Groovy”的方式来编写这个 Groovy 代码:
def myVar=(System.getProperty("props") == null)?
null : System.getProperty("props")
逻辑是:
System.getProperty("props")
是NULL,我想props
是NULL;props
成为System.getProperty("props")
通常,对于空检查,我使用?:
(elvis 运算符,如果左侧为 null 或解析为 false,则返回默认值)或?.
(安全导航,如果左侧为 null,则计算为 null)。如果要设置在属性不存在时使用的默认值,可以执行以下操作:
def myVar = System.properties['props'] ?: 'mydefaultvalue'
如果在 System.properties 中找不到键“props”的任何内容(或者如果返回的值解析为 false),则将 myVar 设置为“mydefaultvalue”。但是由于您的情况下的默认值为 null 那么
def myVar = System.properties['props']
也可以完成这项工作,因为当没有找到给定键的任何内容时,就会返回 null。
这里的 Groovy-ifications 是:
如果您不需要 GroovyString 插值,则更喜欢单引号字符串而不是双引号字符串
对地图和列表使用带括号的索引语法(而不是'get'或'put')
如果 getter 没有参数,则使用缩短的属性形式(不带前缀)(与 Java 不同,Groovy 实现了通用访问原则);对 Java 程序员来说是一种便利,但在 Groovy 中不需要get
System.getProperty(String)
缩短 default-if-null 案例?:
这个成语在 JavaScript 中使用||
:
def myVar = System.properties['props'] || 'mydefaultvalue'
在 Groovy 中不起作用。布尔测试的结果是布尔值,因此 myVar 设置为 true。