
Functional Programming 두 번째 포스팅입니다.
저번 시간에서 함수형 프로그래밍의 개념과 특징을 알아보았습니다.
이번 포스팅에서는 함수형 인터페이스를 사용하기 전, 필수 지식인 람다를 배워보겠습니다.
람다(Lambda)는 익명 함수(Anonymous Function)를 표현하는 방식입니다.
Java 8에서 처음 도입되었으며, 함수형 프로그래밍을 Java에서 활용할 수 있게 된 핵심 기능 중 하나입니다.
이름을 가지지 않고 일회성으로 사용되는 함수를 의미합니다.
Java에서는 보통 람다 표현식으로 익명 함수를 작성합니다.
익명 함수의 특징
람다는 이러한 익명 함수를 간결하게 작성할 수 있도록 도와줍니다.
람다가 등장하기 전, Java에서 특정 동작을 함수처럼 전달하려면 보통 익명 클래스(Anonymous Class)를 사용했습니다.
List<String> list = List.of("a", "b", "c");
// 익명 클래스 사용
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s.toUpperCase());
}
});
람다를 사용하면 같은 코드를 훨씬 간결하게 표현할 수 있습니다.
list.forEach(s -> System.out.println(s.toUpperCase()));
즉, 불필요한 클래스 선언이나 보일러플레이트 코드 없이, 의도(무엇을 할지)만 간결하게 표현할 수 있습니다.
람다는 기본적으로 다음과 같은 형태를 가집니다.
(parameters) -> expression
(parameters) -> { statements }
함수의 구성요소인 파라미터와 표현식을 간소화하여 코드가 깔끔해지고, 가독성이 좋아진다는 장점이 있습니다.
-> 화살표로 구분합니다.예제 코드
(int x, int y) -> x + y
이 람다는 두 개의 정수를 받아 더한 값을 반환하는 함수입니다.
() 생략 가능하기 때문에, 간결한 코드 진행이 가능합니다.예제 코드
x -> x * x // 하나의 매개변수, 괄호 생략 가능
{} 와 return 을 생략할 수 있습니다.예제 코드
// 한 줄의 표현 식은 {}를 생략할 수 있다.
x -> x * x
// 여러 줄의 표현 식
x -> {
System.out.println("Value: " + x);
return x * x;
}
람다는 함수를 값처럼 다룰 수 있게 해주기 때문에, 함수형 프로그래밍의 핵심인 고차 함수(Higher-order function)를 구현할 수 있습니다.
즉, 메서드의 인자로 함수를 넘기거나, 반환값으로 함수를 줄 수 있습니다.
이를 통해 개발자는 “어떻게 할지”가 아니라 “무엇을 할지”에 집중할 수 있고, 코드가 간결하고 읽기 쉬워집니다.
이번 포스팅에서는 함수형 프로그래밍을 이해하기 위한 기초 지식으로 람다를 간단히 살펴보았고, 다음 시간에는 Java에서 함수형 인터페이스를 본격적으로 다루겠습니다.