Groovy each和forEach有什么区别?

时间:2016-02-28 00:53:29

标签: groovy foreach each

简单的问题是我无法在google上找到一个简单的答案:Groovy的each和forEach循环之间有什么区别?

我做了一个简单的例子,语法和行为看起来完全相同:

    [1, 2].each { println it }
    [1, 2].forEach { println it }

两者都打印:

1
2

我在Groovy语言文档中看到的唯一一个例子似乎涉及lambda和闭包之间的区别,但我无法将其与我尝试过的例子联系起来。

谢谢

1 个答案:

答案 0 :(得分:26)

each()forEach()之间的第一个区别是,each()由Groovy的GDK提供,而forEach()由Java 8提供(因此它是在以前版本的Java中不可用。

另一个区别是each()接受Groovy闭包,而forEach()接受Consumer。从Groovy来看,这种差异并不明显,因为Groovy透明地coerces对消费者的封闭。