这段Groovy代码有更“时髦”的写法吗:
def myVar=(System.getProperty("props") == null)?
null : System.getProperty("props")
逻辑是:
- 如果
System.getProperty("props")
为空,我希望props
也为空; - 否则,我希望
props
的值为System.getProperty("props")
的值。
这段Groovy代码有更“时髦”的写法吗:
def myVar=(System.getProperty("props") == null)?
null : System.getProperty("props")
逻辑是:
System.getProperty("props")
为空,我希望 props
也为空;props
的值为 System.getProperty("props")
的值。?:
(Elvis运算符,如果左侧为null或解析为false,则返回默认值)或?.
(安全导航,如果左侧为空,则计算结果为null)。如果您想设置当属性不存在时要使用的默认值,可以这样做:def myVar = System.properties['props'] ?: 'mydefaultvalue'
def myVar = System.properties['props']
如果给定的键没有找到任何内容,则会返回null,因此也可以使用“would do the job as well”。
这里的Groovy改进包括:
如果不需要GroovyString插值,请优先使用单引号字符串而不是双引号字符串
对于映射和列表,请使用带方括号的索引语法(而不是'get'或'put')
如果getter没有参数(与Java不同,Groovy实现了universal access principle),则使用shortened property form(不带get
前缀);System.getProperty(String)
是Java程序员的便利方法,但在Groovy中不需要
使用?:
简化默认值为null的情况
JavaScript中使用||
的习惯用法:
def myVar = System.properties['props'] || 'mydefaultvalue'
在Groovy中不起作用。布尔测试的结果是布尔值,因此myVar被设置为true。
def myVar = System.properties['props'] || 'mydefaultvalue'
- Krzysztof RomanowskifindProperty('foo') ?: 'bar'
findProperty()
方法属于Project(https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html) - 这是一个顶级对象,您可以直接从脚本中进行接口操作。 - Phil Brock
def a = **something**
,这就是答案。 - dmahapatroSystem.property["props"]
,否则你无法比def myVar = System.getProperty("props")
更酷。 - dmahapatro