Groovy的三元条件运算符是否支持语句,而不仅仅是表达式?

raf*_*ian 4 groovy expression conditional-operator statements

是否可以使用带有Groovy条件运算符的表达式包含语句?这就是我现在正在做的事情,我希望在一个带有println语句的条件语句中将其分解......

if(!expired){
  println 'expired is null'
  return true
}
else if( now.after(expired)){
  println 'cache has expired'
  return true
}
else
  return false
Run Code Online (Sandbox Code Playgroud)

转换成单一陈述......

return (!expired) ? true : (now.after(expired)) ? true : false
Run Code Online (Sandbox Code Playgroud)

...想为调试目的做这样的事情......

return (!expired) ? println 'expired is null' true : (now.after(expired)) ? println 'cache has expired' true : false
Run Code Online (Sandbox Code Playgroud)

Vor*_*eir 8

正如GrailsGuy在另一个答案中所说,使用闭包:

def expired= false, expired2= true
return (!expired) ? 
  {println "expired is null"; true}() :
  (expired2) ? {println "cache has expired"; true}() : false
Run Code Online (Sandbox Code Playgroud)