Groovy Documentation

## org.codehaus.groovy.ast.expr
[Java] Class ElvisOperatorExpression

    java.lang.Object
      org.codehaus.groovy.ast.ASTNode
          org.codehaus.groovy.ast.AnnotatedNode
              org.codehaus.groovy.ast.expr.Expression
                  org.codehaus.groovy.ast.expr.TernaryExpression
                      org.codehaus.groovy.ast.expr.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

     Authors:Jochen TheodorouSince:1.5

        Constructor Summary

                ElvisOperatorExpression(Expression base, Expression falseExpression)

        Method Summary

                Expression

                transformExpression(ExpressionTransformer transformer)

                void

                visit(GroovyCodeVisitor visitor)

                    Methods inherited from class TernaryExpression

                    getBooleanExpression, getFalseExpression, getText, getTrueExpression, getType, toString, transformExpression, visit

                    Methods inherited from class Expression

                    getType, setType, transformExpression, transformExpressions, transformExpressions

                    Methods inherited from class AnnotatedNode

                    addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic

                    Methods inherited from class ASTNode

                    copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getText, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition, visit

                    Methods inherited from class java.lang.Object

                    java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

        Constructor Detail

            ElvisOperatorExpression
            public ElvisOperatorExpression(Expression base, Expression falseExpression)

        Method Detail

            transformExpression
            public Expression transformExpression(ExpressionTransformer transformer)

            visit
            public void visit(GroovyCodeVisitor visitor)

    Groovy Documentation