允许在表达式的最后部分使用Groovy/Grails空安全运算符吗?

允许在表达式的最后部分使用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) 最后的?不会添加任何内容(即使它确实起作用),因为短路运算符只需确保表达式中的下一个内容可以干净地处理

我想知道是否可以在表达式的最后一部分使用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)

最后的
不会添加任何内容(即使它确实起作用),因为短路运算符只需确保表达式中的下一个内容可以干净地处理null

null检查在
之前检查变量,以确保可以调用它之后的属性。如果不满足其中一个条件,则使用操作员是没有意义的

更新

您可以调用
等于

if( a.b.c?.equals( something ) )

当然,除非某些东西是空的。。。在这种情况下,这并不符合问题的意图。是的,但我不知道为什么问题会在等式之前检查null。我怀疑正是出于这个原因
a.b.c
应该匹配
something
,除非它是
null
,并且当
something
也是
null
时,避免出现匹配
something
的情况。听起来很混乱(:运算符是
?。
,而不是
,因此表达式末尾的单个?没有意义