람다
기술노트
λ 람다 (Lambda)
람다 또는 '람다 표현식(Lambda Expression)'은 이름이 없는 익명 함수(Anonymous Function)를 간결하게 표현하는 방법입니다. 함수형 프로그래밍 패러다임을 지원하는 많은 언어에서 사용되며, 코드를 더 짧고 가독성 있게 만들어 줍니다.
람다를 사용하면, 간단한 기능을 위해 별도의 메서드를 선언할 필요 없이, 함수가 필요한 위치에 직접 로직을 작성할 수 있습니다.
⚙️ 람다의 기본 구조 (Java 예시)
람다는 보통 매개변수, 화살표(`->`), 그리고 함수 몸체로 구성됩니다.
```java // 전통적인 방식의 익명 클래스 new Thread(new Runnable() {
@Override public void run() { System.out.println("Hello, World!"); }
}).start();
// 람다를 사용한 방식 new Thread(() -> System.out.println("Hello, World!")).start(); ```
위 예시처럼, 람다를 사용하면 코드가 훨씬 간결해지는 것을 볼 수 있습니다.
- `()` : 매개변수 목록. 매개변수가 없으면 빈 괄호를 사용합니다.
- `->` : 매개변수와 함수 몸체를 구분하는 화살표입니다.
- `{}` : 함수가 수행할 로직. 한 줄일 경우 중괄호와 `return` 문을 생략할 수 있습니다.
🤔 람다는 언제 사용하는가?
람다는 주로 '고차 함수(Higher-order Function)'의 인자로 전달될 때 매우 유용하게 사용됩니다.
- 컬렉션 처리 : 리스트와 같은 컬렉션의 각 요소를 순회하며 특정 작업을 수행할 때 (예: `forEach`), 조건을 만족하는 요소만 필터링할 때 (`filter`), 각 요소를 다른 형태로 변환할 때 (`map`) 널리 사용됩니다.
- 이벤트 리스너 : GUI 프로그래밍에서 버튼 클릭과 같은 이벤트를 처리하는 리스너를 간결하게 표현할 수 있습니다.
- 비동기 처리 : 비동기 작업이 완료되었을 때 실행될 콜백 함수를 간단하게 작성할 수 있습니다.
💡 개발자 핵심 Point
- 람다는 함수형 프로그래밍을 지원하는 언어의 핵심적인 기능입니다.
- 람다의 본질은 코드를 데이터처럼 다루는 것입니다. 함수 로직 자체를 변수에 저장하거나, 다른 함수의 인자로 쉽게 전달할 수 있습니다.
- Java에서는 람다를 사용하기 위해 인터페이스에 추상 메서드가 오직 하나만 존재하는 함수형 인터페이스(Functional Interface)가 필요합니다. (`@FunctionalInterface`)
- 람다를 적절히 사용하면 코드의 가독성과 생산성을 크게 높일 수 있지만, 너무 복잡한 로직을 람다 안에 담으면 오히려 가독성을 해칠 수 있으므로 주의해야 합니다.