允许在表达式的最后部分使用Groovy/Grails空安全运算符吗?
我想知道是否可以在表达式的最后一部分使用Groovy空安全运算符。我看到了这一点:允许在表达式的最后部分使用Groovy/Grails空安全运算符吗?,groovy,Groovy,我想知道是否可以在表达式的最后一部分使用Groovy空安全运算符。我看到了这一点: a?.b?.c但我似乎不能使用a?.b?.c? 我需要在if语句检查中使用它,而不是执行以下操作: 如果(a.b.c!=null&&(a.b.c==something))我可以这样简写它吗: if (a.b.c? == something) 谢谢你所需要的 if (a?.b?.c == something) 最后的?不会添加任何内容(即使它确实起作用),因为短路运算符只需确保表达式中的下一个内容可以干净地处理
a?.b?.c
但我似乎不能使用a?.b?.c?
我需要在if语句检查中使用它,而不是执行以下操作:
如果(a.b.c!=null&&(a.b.c==something))
我可以这样简写它吗:
if (a.b.c? == something)
谢谢你所需要的
if (a?.b?.c == something)
最后的
?
不会添加任何内容(即使它确实起作用),因为短路运算符只需确保表达式中的下一个内容可以干净地处理nullnull检查在?
之前检查变量,以确保可以调用它之后的属性。如果不满足其中一个条件,则使用操作员是没有意义的
更新
您可以调用等于
if( a.b.c?.equals( something ) )
当然,除非某些东西是空的。。。在这种情况下,这并不符合问题的意图。是的,但我不知道为什么问题会在等式之前检查null。我怀疑正是出于这个原因
a.b.c
应该匹配something
,除非它是null
,并且当something
也是null
时,避免出现匹配something
的情况。听起来很混乱(:运算符是?。
,而不是?
,因此表达式末尾的单个?没有意义