println it

Software blog about tools, builds and making it all work

Groovy: Picking a value from a number of options

Let’s say you need to define a value based on a number of conditions. If first condition holds true, then the value is X, if second condition holds true then the value is Y and so on. I used to go with a multi-level ternary operator to accomplish that:

def a = 2
def x = ( a == 1 ) ? 'aa' :
        ( a == 2 ) ? 'bb' :
        ( a == 3 ) ? 'cc' :
                     'dd'
assert x == 'bb'

Today @tim_yates has suggested a more debuggable way:

def a = 2
def x = a.with { switch( it ) { 
    case 1  : return 'aa' 
    case 2  : return 'bb'
    case 3  : return 'cc'
    default : return 'dd' }
}
assert x == 'bb'

Thanks, Tim! Will start using it now. This is very close to Scala version, which is even shorter:

val a = 2
val x = a match {
    case 1 => "aa"
    case 2 => "bb"
    case 3 => "cc"
    case _ => "dd"
}
assert ( x == "bb" )

, , ,

3 Responses to “Groovy: Picking a value from a number of options”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>