我不确定何时确切需要使用扩展点运算符。如果我有一个列表,例如:
def animals = ['ant', 'buffalo', 'canary', 'dog']
因为
animals
和列表的成员都具有size()方法,所以为了在列表的元素上(而不是列表本身)调用该方法,我需要使用:animals*.size()
而不是:
animals.size()
但是,请考虑以下表达式,该表达式返回String类上可用的方法名称的列表。
String.metaClass.methods.name
Groovy如何知道(不使用散点运算符)我希望从
name
返回的列表的每个元素而不是列表本身中检索String.metaClass.methods
属性?在这种情况下是否有一组规则可以使用,例如:谢谢,
大学教师
最佳答案
简短的答案是DefaultGroovyMethods adds a "getAt" method to all Collections遍历Collection并收集每个的属性值。
如果您对较长的答案感兴趣,我前一阵子写了一个blog post that dives down the metaClass rabbit hole on this exact topic。
关于Groovy扩展点运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/997345/