相关疑难解决方法(0)

Groovy点阵运算符

我不确定何时需要使用spread-dot运算符.如果我有一个列表,如:

def animals = ['ant', 'buffalo', 'canary', 'dog']
Run Code Online (Sandbox Code Playgroud)

因为这两个animals和列表的成员都有一个size()方法,那么为了在列表的元素(而不是列表本身)上调用该方法,我需要使用:

animals*.size()
Run Code Online (Sandbox Code Playgroud)

而不是:

animals.size()
Run Code Online (Sandbox Code Playgroud)

但是,请考虑以下表达式,该表达式返回String类上可用的方法名称列表

String.metaClass.methods.name
Run Code Online (Sandbox Code Playgroud)

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

  • 如果List上存在方法/属性,则在List上调用它
  • 否则尝试为List的每个元素调用它

谢谢,唐

groovy

13
推荐指数
1
解决办法
2619
查看次数

标签 统计

groovy ×1