inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 스터디 1기 BE 3번째 과제

JS
0

람다 표현식이란?

람다 표현식 줄여서 람다식이란 메서드를 간결한 함수식으로 표현한 것이다.

그리고 함수형 프로그래밍을 구성하기 위한 함수식이라고 하는데

람다식이 나오게 된 이유는 객체 지향 프로그래밍 언어인 자바에서

함수형 프로그래밍을 사용하기 위해서 Java 8버전 부터 추가되었다.

자바에서 메서드를 사용하려면 클래스를 정의하고 메서드를 작성해야 하지만

람다식으로 표현하면 메서드의 이름과 반환타입을 생략할 수 있다.

int add(int x, int y) {
		return x + y;
}

// 람다식으로 표현
// 메서드명과 반환타입 생략 가능
(int x, int y) -> {
		return x + y;
}

// 매개변수 타입도 생략 가능
(x, y) -> x + y;

람다식과 익명 클래스

어떻게 클래스를 만들지 않고 메서드를 작성할 수 있는 걸까?

자바에는 이름이 없는 클래스인 익명 클래스가 있는데

익명 클래스는 클래스를 따로 정의하지 않고 바로 객체로 생성해 한번만 사용할 수 있다.

이 익명 클래스를 짧게 표현하면 람다식이 되는 것이다.

interface Add {
		int add(int x, int y);
}

// 익명 클래스
Add a = new Add() {
		public int add(int x, int y) {
				return x + y;
		}
};

// 람다식
Add a = (x, y) -> {return x + y;};

여기서 익명 클래스와 람다식을 대입 받는 변수가 필요한데

이 변수는 인터페이스를 사용해야 하고

이 인터페이스를 함수형 인터페이스라고 한다.

함수형 인터페이스(functional interface)

단 하나의 추상 메서드가 선언된 인터페이스를 함수형 인터페이스라고 한다.

그리고 람다식은 함수형 인터페이스의 추상 메서드의 구현 부분을 짧게 표현한 것

이 함수형 인터페이스의 추상 메서드를 통해서 타입을 추론할 수 있기 때문에 타입의 생략이 가능하다.

@FunctionalInterface

이 어노테이션을 인터페이스에 붙여주면 두 개 이상의 추상 메서드가 선언되지 않도록 컴파일러가 체크해줘서 실수를 줄일 수 있다.

 

 

참고

https://inpa.tistory.com/entry/%E2%98%95-Lambda-Expression#

백엔드

답변 0