mike-neckのブログ

Java or Groovy or Swift or Golang

Groovy2.4.3でJava8のStreamとかOptionalの演算もClosureでできるようになってた件

表記のとおりです。

f:id:mike_neck:20150504230142p:plain

Java8のFunctionalInterface群は使い勝手がよくて、そっちを主に使っていましたが、GroovyもJava8の言語仕様対応を進めてて、Groovy2.4.3から(それ以前から?)は

def func = [apply: {s -> s.size()}] as Function<String, Integer>

などと書かなくてもClosureで書けるようになっていました。

サンプルコード

import java.util.stream.Stream

Stream.of('foo', 'bar', 'baz')
    .mapToInt{it.size()}
    .forEach {assert it == 3}

assert Optional.of('foo')
    .map{it.size()}
    .orElse(0) == 3

やったね!