I'm unsure about when exactly I need to use the spread-dot operator. If I have a list such as:
def animals = ['ant', 'buffalo', 'canary', 'dog']
Because both animals
and the members of the list have a size() method, then in order to have the method invoked on the elements of the list (rather than the list itself), I need to use:
animals*.size()
rather than:
animals.size()
However, consider the following expression which returns a list of the method names that are available on the String class
String.metaClass.methods.name
How does Groovy know (without using the spread-dot operator) that I want the name
property to be retrieved from each element of the list returned by String.metaClass.methods
, rather than the list itself? Is there a set of rules to use in this case such as:
Thanks, Don
the return type of =~ is a Matcher.
The spread operator is a new addition to the set of operators in JavaScript ES6. It takes in an iterable (e.g an array) and expands it into individual elements. The spread operator is commonly used to make shallow copies of JS objects. Using this operator makes the code concise and enhances its readability.
The short answer is that DefaultGroovyMethods adds a "getAt" method to all Collections that iterates through the Collection and collects the property value for each.
If you're interested in the long answer, I wrote up a blog post that dives down the metaClass rabbit hole on this exact topic a while ago.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With