Groovy - 将每个方法串起来

Kit*_*son 2 groovy

我刚刚开始学习 Groovy,它看起来真的很棒!

这是一个非常简单的例子。

"Groovy".each {a -> println a};
Run Code Online (Sandbox Code Playgroud)

它很好地打印如下。

G
r
o
o
v
y
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 根据下面的链接,“每​​个”方法不是 String 对象的一部分。那它是怎么工作的呢?

http://beta.groovy-lang.org/docs/latest/html/groovy-jdk/

如何获取对象关闭的参数列表?

示例 String.each 有 1 个参数,Map.each 有 1 或 2 个参数,例如 entry 或 key & value。

Dyl*_*gte 5

DefaultGroovyMethods 中的相关代码是

public static Iterator iterator(Object o) {
   return DefaultTypeTransformation.asCollection(o).iterator();
}
Run Code Online (Sandbox Code Playgroud)

其中包含:

else if (value instanceof String) {
   return StringGroovyMethods.toList((String) value);
}
Run Code Online (Sandbox Code Playgroud)

字符串 toList 是:

public static List<String> toList(String self) {
   int size = self.length();
   List<String> answer = new ArrayList<String>(size);
   for (int i = 0; i < size; i++) {
      answer.add(self.substring(i, i + 1));
   }
   return answer;
}
Run Code Online (Sandbox Code Playgroud)