[java] 함수형 인터페이스를 사용하여 커링(Currying)을 구현하는 방법은 어떻게 되나요?
처음으로 커링을 구현하기 위해 하나의 인자를 받는 함수형 인터페이스를 정의해야 합니다. 자바에서는 Function
인터페이스를 사용할 수 있습니다. Function
인터페이스는 하나의 입력 값을 받아서 결과 값을 리턴하는 메소드를 정의하고 있습니다. 이를 이용하여 커링을 구현할 수 있습니다.
아래는 자바에서 커링을 구현하는 예제 코드입니다.
import java.util.function.Function;
public class CurryingExample {
public static void main(String[] args) {
// 커링을 구현할 함수 정의
Function<Integer, Function<Integer, Integer>> multiply = x -> y -> x * y;
// 첫 번째 인자를 고정하여 새로운 함수 생성
Function<Integer, Integer> multiplyByTwo = multiply.apply(2);
// 커링된 함수 사용
int result = multiplyByTwo.apply(5); // 결과: 10
System.out.println(result);
}
}
위의 예제에서 multiply
함수는 두 개의 인자를 받아서 곱셈을 수행합니다. 이 함수를 Function
인터페이스를 사용하여 커링할 수 있습니다. multiplyByTwo
함수는 multiply
함수에서 첫 번째 인자를 2로 고정한 커링된 함수입니다. 따라서 multiplyByTwo
함수를 적용할 때에는 하나의 인자만 전달하면 됩니다.
커링은 함수형 프로그래밍에서 유용하게 사용되는 기법 중 하나이며, 자바에서도 함수형 인터페이스를 활용하여 간단하게 구현할 수 있습니다.
참고 자료: