람다식

Sunny·2023년 1월 6일
0

🌼 람다식이란?

람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로, 함수 지향 언어에 가깝다. 람다식을 수용함으로써 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있다.

// 익명 구현 객체 예시
Runnable runnable = new Runnable() {
	public void run() { ... }
};
// 람다식 예시
// 위 코드의 익명 구현 객체를 람다식으로 표현
Runnable runnable = () -> { ... };

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


🌼 람다식 기본 문법

함수적 스타일의 람다식을 작성하는 방법은 다음과 같다.

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

(타입 매개변수, ...)는 오른쪽 중괄호 {} 블록을 실행하기 위해 필요한 값을 제공하는 역할을 한다. -> 기호는 매개 변수를 이용해서 중괄호 {}를 실행한다는 뜻이다.

다음은 예시이다. int 매개 변수 a 값을 콘솔에 출력하기 위해 다음과 같이 람다식으로 작성할 수 있다.

(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개의 댓글