上記の 2 つのケースをFunctional Javaで記述する方法を次に示します。
1. 各要素に 1 を追加します。
これは関数型プログラミング ライブラリであるため、変更操作は提供しません。ただし、それらは自分で簡単に追加できます。
public static <A> void transform(Array<A> xs, F<A, A> f) {
for(int i = 0; i < xs.length(); i++) {
xs.set(i, f.f(xs.get(i)));
}
}
使用する:
transform(yourArray, Integers.add.f(1));
2. 2 つの行列を追加します。
とを両方の型の 2 つの行列としxss
ます。次に、それらを追加できます:yss
Array<Array<Integer>>
xss.zip(yss).map(new F<P2<Array<Integer>, Array<Integer>>, Array<Integer>>() {
public Array<Integer> f(P2<Array<Integer>, Array<Integer>> p) {
Array<Integer> xs = p._1();
Array<Integer> ys = p._2();
return xs.zip(ys).map(new F<P2<Integer, Integer>, Integer>() {
public Integer f(P2<Integer, Integer> q) {
return q._1() + q._2();
}
});
}
});
これは必要以上に冗長に感じるかもしれません。これは、Java がラムダ式をまだサポートしていないためです。それまでの間、 IDE はそのような手法をより親しみやすいものにするのに役立ちます。