三元条件中使用的参考变量? (例如:var?this:null)

reference variable used in ternary conditional? (ex: var?this:null)

有没有办法在 groovy 中引用 ?: 语句的第一部分?

比如有什么办法可以缩短

def time = map.get('time') ? map.get('time').get('milliseconds') : null

类似于

def time = map.get('time') ? it.get('milliseconds') : null

,其中 "it" 引用命令的第一部分?

听起来您只想使用 safe navigation operator:

def time = map.get('time')?.get('milliseconds')

如果map.get('time') returns 是空引用,整个表达式的结果将为空,get('milliseconds') 不会被调用。

您可以使用安全导航运算符 http://docs.groovy-lang.org/latest/html/documentation/index.html#_safe_navigation_operator

所以你可以这样做:

def time = map?.get('time')?.get('milliseconds')

您可以使用 safe navigation operator:

def time = map.get('time')?.get('milliseconds')

如果map.get('time')的结果是null,它确保不会调用.get('milliseconds')。在这种情况下,表达式的总体结果也将是 null

这简直就是:

map.time?.milliseconds