Одна из идей, стоящих за функциями (Function<A, B>
), заключается в том, что они являются компонуемыми,
например.g(f(x))
, что эквивалентно f.andThen(g).apply(x)
в java.
Определение одной функции или нескольких функций зависит от ответственности, которую вы хотите дать за каждую функцию.
Например, вы можете иметь отдельную "функцию"для увеличения числа "и" функция для создания квадрата числа ", таким образом, вы можете использовать их повторно при необходимости.
Function<Integer, Integer> f = a -> a + 1;
Function<Integer, Integer> g = a -> a * a;
var incrementAndSquare = f.andThen(g).apply(2); //9
Function<Integer, Integer> h = a -> a - 1;
var decrementAndSquare = h.andThen(g).apply(5); //16
Примечание : Consumer<A>
в Java такжефункция Function<A, void>
, которая возвращает void.
В вашем случае, если ее просто println
, может быть, одной функции будет достаточно, если вам не нужна такая же функция где-то еще.
Если вы делаете два "отдельные задачи ", вы можете определить отдельные функции.Это делает ответственность яснее, обеспечивает компоновку, легко тестирует функции по отдельности.