자바/람다식

람다식의 기본 개념

백_곰 2022. 4. 11. 11:19

1. 람다식이란?

- 메서드를 하나의 '식'으로 표현한 것을 말한다. 그러므로, 메서드의 이름과 반환값이 사라진다.

 

- 우리는 그것을 익명 함수라고 표현한다.

 

- 아래의 예시를 보자.

int[] arr = new int[5];

Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1);

 

(위 주황색 부분이 람다식이다.)

(이렇게 한다면 클래스와 객체를 생성할 필요없이 바로 호출할 수 있다는 장점이 있다.)

 

 

 

 

 

2. 람다식 작성하기.

- 아래의 코드는 원래의 메서드 함수이다. 이것을 람다식으로 바꾸어 볼 것이다.

(int a, int b) -> {return a>b ? a : b;}

또는

(int a, int b) -> a>b? a : b

또는

(a,b) -> a>b? a : b

// 여기서는 매개변수 a,b중 하나라도 int를 생략하지 않는다면 생략 불가능하다.

// ex) (int a, b) -> 불가능

 

(여기서 ';'을 주의하자. 문장은 세미클론이 필요하지만 람다식은 식이기 때문에 필요가 없다.)

 

 

 

- 또한 선언된 매개변수가 하나라면 ()를 아예 생략도 가능하다.

(a) -> a*a

또는

a -> a*a

 

( 그러나 (int a)는 되지만 int a는 불가능하다. )

 

 

 

- 만약 괄호{} 안의 문장이 return 문이 있을 경우 {}가 생략 불가능하다.

(int a, int b) -> { return a>b? a : b} 

<가능>

 

(int a, int b) -> return a>b? a : b

<불가능>

 

 

 

- 리턴문을 사용하면서 괄호{}를 삭제할 수 있다.

int roll(){

   return (int) (Math.random() * 6);

<원래 메서드>

 

() -> { return (int) (Math.random() * 6); }

또는

() -> (int) (Math.random() * 6)

<람다식 메서드>