Named parameters
We have touched upon the concept of named parameters already. In a previous chapter, we looked at how Groovy allows us to construct a POGO by using a default built-in constructor that accepts a Map
argument. We can construct a POGO by passing an inline Map
object to the constructor. Groovy uses the map object to initialize each property of the POGO in turn. The map is iterated and the corresponding setter is invoked for each map element that is encountered:
class POGO { def a = 0 def b = 0 def c = 0 } given: def pogo1 = new POGO(a:1, b:2, c:3) def pogo2 = new POGO( b:2, c:3) def pogo3 = new POGO(b:2, a:3) expect: pogo1.a == 1 pogo1.b == 2 pogo1.c == 3 and: pogo2.a == 0 pogo2.b == 2 pogo2.c == 3 and: pogo3.a == 3 pogo3.b == 2
When we pass a Map
object to a constructor, the parentheses []
can be left out. We can also list the property values in any order we like. If a property is excluded, the corresponding setter will...