Class ElvisOperatorExpression

  • All Implemented Interfaces:
    GroovydocHolder<AnnotatedNode>, NodeMetaDataHandler

    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