208. Partially applying a Function
A Function
that is partially applied is a Function
that applies only a part of its arguments, returning another Function
. For instance, here is a TriFunction
(a functional function with three arguments) that contains the apply()
method, next to two default
methods that partially apply this function:
@FunctionalInterface
public interface TriFunction <T1, T2, T3, R> {
R apply(T1 t1, T2 t2, T3 t3);
default BiFunction<T2, T3, R> applyOnly(T1 t1) {
return (t2, t3) -> apply(t1, t2, t3);
}
default Function<T3, R> applyOnly(T1 t1, T2 t2) {
return (t3) -> apply(t1, t2, t3);
}
}
As you can see, applyOnly(T1 t1)
applies only the t1
argument and returns a BiFunction
. On the other hand, applyOnly(T1 t1, T2 t2)
applies only t1
and t2
, returning a Function
.
Let’s see how we can use these methods. For instance, let’s consider the formula (a+b+c)2 = a2+b2+c2+2ab+2bc+2ca, which can...