Class ElvisOperatorExpression


public class ElvisOperatorExpression extends TernaryExpression
Represents a short ternary expression x ?: y, which is equal to
 def truePart = x
 def booleanPart = truePart as boolean
 booleanPart? truePart : y
 
Even if x is no atomic expression, x will be evaluated only once. Example:
 class Foo { 
   def index=0 
   def getX(){ index++; return index }
 }
 def foo = new Foo()
 def result = foo.x ?: "false case" 
 assert foo.index == 1
 assert result == 1 
 
Since:
1.5
Author:
Jochen Theodorou