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