람다식의 기본 개념
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)
<람다식 메서드>