## 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

    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

    Constructor Summary

    ElvisOperatorExpression(Expression base,
                            Expression falseExpression)

    Method Summary

     Expression
    transformExpression(ExpressionTransformer transformer)

              Return a copy of the expression calling the transformer on any nested expressions

     void
    visit(GroovyCodeVisitor visitor)

    Methods inherited from class org.codehaus.groovy.ast.expr.TernaryExpression

    getBooleanExpression, getFalseExpression, getText, getTrueExpression, getType, toString

    Methods inherited from class org.codehaus.groovy.ast.expr.Expression

    setType, transformExpressions, transformExpressions

    Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode

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

    Methods inherited from class org.codehaus.groovy.ast.ASTNode

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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Constructor Detail

    ElvisOperatorExpression

    public ElvisOperatorExpression(Expression base,
                                   Expression falseExpression)

    Method Detail

    visit

    public void visit(GroovyCodeVisitor visitor)

    Overrides:visit in class TernaryExpression

    transformExpression

    public Expression transformExpression(ExpressionTransformer transformer)

    Description copied from class: Expression
    Return a copy of the expression calling the transformer on any nested expressions

    Overrides:transformExpression in class TernaryExpression

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