Since Groovy 1.6 we can define and assign values to several variables at once. This is especially useful when a method returns multiple values and we want to assign them to separate variables.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // Assign and declare variables. def (username, email) = [ 'mrhaki' , 'email@host.com' ] assert 'mrhaki' == username assert 'email@host.com' == email // We can assign later than the definition of the variables. int housenr String streetname (streetname, housenr) = [ 'Old Street' , 42 ] assert 42 == housenr assert 'Old Street' == streetname // We can also use type declarations. def (String streetName, int houseNumber) = [ 'Old Street' , 42 ] assert 42 == houseNumber assert 'Old Street' == streetName // Return value of method can be assigned to multiple variables. def iAmHere() { [ 29.20090 , 12.90391 ] } def (coordX, coordY) = iAmHere() assert coordX == 29.20090 assert coordY == 12.90391 // More values than variables: extra values are ignored. def (a, b, c) = [ 'a' , 'b' , 'c' , 'd' ] assert 'a' == a assert 'b' == b assert 'c' == c // Less values than variables: variable is not set. def (x, y, z) = [ 100 , 200 ] assert 100 == x assert 200 == y assert !z // Useful for getting regular expressions matching groups. def money = '12 Euro' def regexp = /(\d+) (\w+)/ def (exp, amount, currency) = (money =~ regexp)[ 0 ] assert '12' == amount assert 'Euro' == currency |