Groovy 1.7.0

## org.codehaus.groovy.ast.expr
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

    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

     author:Jochen Theodorou
     since: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, isSynthetic, setDeclaringClass, setSynthetic

                    Methods inherited from class ASTNode

                    getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getText, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setSourcePosition, visit

                    Methods inherited from class Object

                    wait, wait, wait, hashCode, getClass, equals, toString, notify, notifyAll

        Constructor Detail

            ElvisOperatorExpression
            public ElvisOperatorExpression(Expression base, Expression falseExpression)

        Method Detail

            transformExpression
            public Expression transformExpression(ExpressionTransformer transformer)

            visit
            public void visit(GroovyCodeVisitor visitor)

    Copyright © 2003-2009 The Codehaus. All rights reserved.