ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 람다와 스트림 - 람다식의 정의
    백엔드/자바 2021. 8. 24. 09:00

    람다식(Lambda Expression)이란?

     

    자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다.

     

    메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있다.

     

    화살표 기호로 무언가 표시해주고, 무언가 많이 생략된 것인데 이것을 람다식이라 부른다.

     

    람다식은 익명함수의 하나로 메서드를 간단하게 하나의 식으로 나타낸 것이다.

     

    참고로 첫번째 체이닝된 메서드들을 풀어서 쓰면 다음과 같다.

     

     

     

    붉은 박스 안의 코드가 위에서 붉은 줄로 표시해준 람다식과 동일한 역할을 한다.

     

    이처럼 복잡한 메서드를 만들거나 컬렉션 자료를 다룰 때 람다식을 쓰면 깔끔한 코드 작성이 가능하다.

     

    물론 이러한 람다식도 단점은 있다.

     

    람다는 많은 부분이 생략되어 표현되므로 작업 효율을 늘려주고 코드가 깔끔해지는 장점을 가진데 반해서,

     

    남발할 경우 오류 등이 발생했을 때 그 원인을 찾는 것이 쉽지 않다는 단점이 있다.

     

    그래서 람다는 간단하지만 반복적이고 코드가 긴 작업을 간략화 할 때 쓰면 그 효율이 좋아진다.

    람다식 만들기

    람다식을 만드는데는 몇 가지 과정을 거쳐야한다.

     

    1. 메서드의 이름과 반환 타입을 제거하고 {} 앞에 화살표('->')를 추가한다.

     

     

    위에서 언급했듯 람다식은 익명함수로서 당연히 이름이 없어야 하므로, 이름과 반환타입을 지워준다.

     

    반환 타입도 return을 하는 자료 타입으로 알아서 설정되므로 지워준다.

     

    사실 이 과정만 거쳐도 람다식은 제대로 작동한다.

     

    하지만 람다식의 목적이 간략 표현이므로 여기서 추가적으로 더 간략하게 표현이 가능하다.

     

     

    2. 반환값이 있을 경우 'return' 명령어와 괄호를 생략할 수 있다.( 끝에 세미콜론 ';'도 생략함)

     

     

    반환 값이 있을 경우 리턴문(return 명령어, 괄호)와 더불어 세미콜론까지 생략이 가능하다.

     

     

    3. 매개변수의 타입이 추론 가능하다면 매개변수의 타입도 생략이 가능하다.

     

     

    대부분의 경우 타입 추론이 가능하므로 대체로 위와 같이 매개변수 타입은 생략해줘도 된다.

     

    람다식은 메서드를 간단하게 표현하는 것이므로 대체로 람다식을 만들어준다고 한다면,

     

    3단계까진 거친다고 봐야 한다.

    람다식 작성시 주의사항

    1. 매개변수가 하나고, 타입 생략이 가능하다면 매개변수의 괄호도 생략 가능.

     

     

    매개변수의 타입은 대체로 생략이 가능한데, 이 경우 매개변수의 괄호까지 생략이 가능하다.

     

     

    2. 반환 값이 없더라도 블록 안의 문장이 하나일 경우 괄호 생략이 가능하다.

     

     

    위에서 잠시 언급했는데, 반환값이 있을 경우 return문+괄호+세미콜론 생략이 가능하다고 했다.

     

    이는 리턴값이 없어도 적용가능한데, 단 블록 안의 문장이 위 그림과 같이 단 하나일때만 가능하다.

     

    이 경우 블록과 더불어 세미콜론(';')의 생략이 가능하다.

     

     

Designed by Tistory.