Groovy扩展点算子

Groovy扩展点算子,groovy,Groovy,我不确定何时需要使用扩展点运算符。如果我有以下列表: def animals = ['ant', 'buffalo', 'canary', 'dog'] 因为animals和列表的成员都有一个size()方法,所以为了在列表的元素(而不是列表本身)上调用该方法,我需要使用: animals*.size() 而不是: animals.size() 但是,请考虑下面的表达式,该表达式返回在字符串类上可用的方法名称的列表 String.metaClass.methods.name Groovy

我不确定何时需要使用扩展点运算符。如果我有以下列表:

def animals = ['ant', 'buffalo', 'canary', 'dog']
因为
animals
和列表的成员都有一个size()方法,所以为了在列表的元素(而不是列表本身)上调用该方法,我需要使用:

animals*.size()
而不是:

animals.size()

但是,请考虑下面的表达式,该表达式返回在字符串类

上可用的方法名称的列表
String.metaClass.methods.name
Groovy如何知道(不使用扩展点运算符)我希望从
String.metaClass.methods
返回的列表的每个元素中检索
name
属性,而不是列表本身?在这种情况下是否有一套规则可供使用,例如:

  • 若列表中存在方法/属性,请在列表中调用它
  • 否则,尝试为列表的每个元素调用它
谢谢, Don

简单的回答是,它遍历集合并收集每个集合的属性值


如果你对冗长的答案感兴趣,我刚才写过。

Es magico.blog帖子列表被打破了