Platinum Partner
java,groovy

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" )

 

From http://evgeny-goldin.com/blog/picking-value/

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}