Book Image

Groovy for Domain-Specific Languages, Second Edition

By : Fergal Dearle
Book Image

Groovy for Domain-Specific Languages, Second Edition

By: Fergal Dearle

Overview of this book

Table of Contents (20 chapters)
Groovy for Domain-specific Languages Second Edition
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Free Chapter
1
Introduction to DSLs and Groovy
Index

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