람다식

Sunny·2022년 11월 9일
0

🌱람다식(Lambda Expression)이란?

자바는 함수적 프로그래밍을 위해 자바 8부터 람다식을 지원하였다. 자바에서 람다식을 수용한 이유는 자바 코드가 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다.

람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다.

람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체

예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다.

Runnable runnable = new Runnable() {
	public void run() {...}
}

위 코드에서 익명 구현 객체를 람다식[ ( ) -> {...} ]으로 표현하면 다음과 같다.

Runnable runnable = () -> { ... };

람다식은 "(매개변수) -> {실행코드}" 형태로 작성되는데, 마치 함수 정의 형태를 띠고 있지만 런타임 시에 인터페이스의 익명 구현 객체로 생성된다. 어떤 인터페이스를 구현할 것인가는 대입되는 인터페이스가 무엇이냐에 달려있다. 위 코드는 Runnable 변수에 대입되므로 람다식은 Runnable의 익명 구현 객체를 생성하게 된다.


🌱람다식(Lambda Expression)의 기본 문법

(타입 매개변수) -> { 실행문; }

(타입 매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 한다. 매개 변수의 이름은 개발자가 자유롭게 줄 수 있다. -> 기호는 매개변수를 이용해서 중괄호 { }를 실행한다는 뜻으로 해석하면 된다.

다음은 예시다.

(int a) -> { System.out.println(a); }

매개변수 타입은 런타임 시에 대입되는 값에 따라 자동으로 인식될 수 있기 때문에 람다식에서는 매개 변수의 타입을 일반적으로 언급하지는 않는다. 그래서 위 코드는 다음과 같이 작성할 수 있다.

(a) -> { System.out.println(a); }

하나의 매개 변수만 있다면 괄호 ( )를 생략할 수 있고, 하나의 실행문만 있다면 중괄호 { } 도 생략할 수 있다. 그래서 위 코드는 다음과 같이 작성할 수 있다.

a ->  System.out.println(a)

만약 매개 변수가 없다면 람다식에서 매개 변수 자리가 없어지므로 다음과 같이 빈 괄호( )를 반드시 사용해야 한다.

() -> { 실행문; ... }

중괄호 { }를 실행하고 결과값을 리턴해야 한다면 다음과 같이 return 문으로 결과값을 지정할 수 있다.

(x,y) -> { return x+y };

중괄호 { }에 return 문만 있을 경우, 람다식에서는 return문을 사용하지 않고 다음과 같이 작성하는 것이 정석이다.

(x,y) -> { x+y };
profile
개발에 재미를 붙여보기 :)

0개의 댓글