Hi,
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:
- If method/property exists on List, invoke it on List
- Otherwise try to invoke it for each element of List
Thanks, Don