JAVA/포스팅

자바 Function의 합성

짜집퍼박사(짜박) 2023. 11. 22. 00:51

자바에서는 Function 인터페이스를 이용하여 함수의 합성(composition)을 구현할 수 있습니다. Function 인터페이스는 하나의 입력을 받아서 결과를 반환하는 함수를 표현하는 인터페이스이며, 이를 이용하여 두 개의 함수를 합성할 수 있습니다. 자바 8부터는 Function 인터페이스의 andThen 및 compose 메서드를 이용하여 함수의 합성을 지원합니다.

 

1. andThen 메서드

andThen 메서드는 현재 함수를 실행한 결과를 다른 함수에 전달하고, 그 결과를 반환하는 새로운 함수를 생성합니다.

Function<Integer, Integer> multiplyBy2 = x -> x * 2;
Function<Integer, Integer> add3 = x -> x + 3;

// andThen을 이용한 함수 합성
Function<Integer, Integer> multiplyAndAdd = multiplyBy2.andThen(add3);

int result = multiplyAndAdd.apply(5); // (5 * 2) + 3 = 13

 

2. compose 메서드

compose 메서드는 다른 함수를 실행한 결과를 현재 함수에 전달하고, 그 결과를 반환하는 새로운 함수를 생성합니다.

Function<Integer, Integer> multiplyBy2 = x -> x * 2;
Function<Integer, Integer> add3 = x -> x + 3;

// compose를 이용한 함수 합성
Function<Integer, Integer> addAndMultiply = multiplyBy2.compose(add3);

int result = addAndMultiply.apply(5); // (5 + 3) * 2 = 16

 

위의 예제에서 multiplyBy2 함수는 주어진 숫자를 2배로 만들고, add3 함수는 주어진 숫자에 3을 더합니다. andThen 메서드를 이용하면 먼저 주어진 숫자를 2배로 만든 다음에 3을 더하는 새로운 함수를 생성하게 되고, compose 메서드를 이용하면 먼저 주어진 숫자에 3을 더한 다음에 2배로 만드는 새로운 함수를 생성합니다.

이러한 함수 합성은 코드의 가독성을 향상시키고, 여러 함수를 조합하여 새로운 기능을 만들 때 유용합니다. 함수형 프로그래밍에서는 이러한 함수 합성을 통해 모듈화된 함수들을 조합하여 더 복잡한 동작을 수행할 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 스트림(stream)  (0) 2023.11.22
자바 Predicate의 결합  (0) 2023.11.22
자바 java.util.function패키지  (0) 2023.11.22
자바 함수형 인터페이스  (0) 2023.11.22
자바 람다식 작성하기  (0) 2023.11.22