Syntax 如何用Groovy实现空检查?
有没有更“Groovy”的方式来编写此Groovy代码:Syntax 如何用Groovy实现空检查?,syntax,groovy,null-check,Syntax,Groovy,Null Check,有没有更“Groovy”的方式来编写此Groovy代码: def myVar=(System.getProperty("props") == null)? null : System.getProperty("props") 逻辑是: 如果System.getProperty(“props”)为空,我希望props为空 否则,我希望props成为System.getProperty(“props”)的值 通常用于空值检查,我使用?:(如果左侧为空,则elvis运算符返回默认值或解析为
def myVar=(System.getProperty("props") == null)?
null : System.getProperty("props")
逻辑是:
- 如果
为空,我希望System.getProperty(“props”)
为空李>props
- 否则,我希望
成为props
System.getProperty(“props”)的值
?:
(如果左侧为空,则elvis运算符返回默认值或解析为false)或?。
(安全导航,如果左侧为空,则计算为空)。如果要设置属性不存在时使用的默认值,可以执行以下操作:
def myVar = System.properties['props'] ?: 'mydefaultvalue'
如果在键“props”的System.properties中找不到任何内容(或者如果返回的值解析为false),则将myVar设置为“mydefaultvalue”。但是由于您的案例中的默认值是null
def myVar = System.properties['props']
也可以执行此任务,因为当给定密钥没有找到任何内容时,将返回null
这里的Groovy定义是:
- 如果不需要GroovyString插值,则更喜欢单引号字符串而不是双引号字符串
- 对映射和列表使用带括号的索引语法(而不是“get”或“put”)
- 如果getter没有参数,则使用(不带
前缀)(与Java不同,Groovy实现了)get
对Java程序员来说是一种方便,但在Groovy中是不需要的System.getProperty(String)
- 如果为空,则使用
| |
可以找到这个习惯用法:
def myVar = System.properties['props'] || 'mydefaultvalue'
在Groovy中不起作用。布尔测试的结果是一个布尔值,因此myVar被设置为true。停下来,喝杯咖啡,重新思考你在问题中的陈述。:)这绝对是一个好主意:)我不知道为什么会被否决。它以前从未被问过,也不容易研究,而且是一个编程/代码问题。至于咖啡@dmahapatro,那根本没用。我有和以前一样的问题…我没有投反对票,但我认为你的要求完全不清楚。如果Pawel的答案不是你想要的,那么我不知道你在找什么。谢谢@NathanHughes,但Pawel的答案是“这绝对是个好主意:)”。他指的是德马哈帕特罗建议我喝杯咖啡,但这不是答案。至于我在问什么,我在问,对于我目前编写代码的方式,是否有语法上的Groovy快捷方式。例如,Groovy允许您删除语句末尾的分号,等等。我想知道我是否可以在这里做些什么来“缩小”我的代码并使其更“Groovy”。或者
def myVar=System.properties['props']| mydefaultvalue'
@castus:这似乎是Ruby iirc中一个熟悉的习惯用法,我希望它在这里也能起作用。但在groovy中,您的行会导致myVar被设置为布尔值true。在build.gradle文件中,您可以使用它来获取带有默认值的gradle属性:findProperty('foo')?:“bar”
findProperty()方法属于Project()——可以直接从脚本与之交互的顶级对象。