あんまり気にしていなかったんですが、Twitter見ててふと引っかかって。
Groovyって、Java 8のLambda式が渡せるところに、GroovyのClosureを渡せるんですね。
Official support for running Groovy on JDK 8
http://groovy.codehaus.org/Groovy+2.3+release+notes#Groovy2.3releasenotes-OfficialsupportforrunningGroovyonJDK8
せっかくなので、試してみました。
import java.util.stream.IntStream IntStream .rangeClosed(1, 10) .filter { e -> e % 2 == 0 } .map { it * 2 } .forEach { e -> println(e) }
結果。
4 8 12 16 20
へぇ〜。
他のパターンも、一応。
import java.util.stream.IntStream def even = { e -> e % 2 == 0 } def doubling = { e -> e * 2 } def show = { println(it) } IntStream .rangeClosed(1, 10) .filter(even) .map(doubling) .forEach(show)
こんなのも。
import java.util.stream.IntStream def even(i) { i % 2 == 0 } def doubling(i) { i * 2 } def show(i) { println(i) } IntStream .rangeClosed(1, 10) .filter(this.&even) .map(this.&doubling) .forEach(this.&show)
なるほど、覚えておきましょう。