# 2022.08.15

## 할일 및 한일

* [x] 자바 람다식 알아보기, 자료 만들기
* [ ] nest.js 복습하기

## 경험 및 배움

### Java에서의 람다식 알아보기

이번 자바 세미나에서 과제를 부여 받아서 자바에서의 람다식에 대해 알아보게 되었다.

{% hint style="info" %}
***람다식(Lambda Expression)***

익명 함수를 지칭하는 용어로 함수를 보다 단순하게 표현하는 방법으로 마치 함수처럼 작성하지만, 실행시 익명 구현 객체를 생성하는 방식으로 구동된다.
{% endhint %}

람다식은 쉽게 말하면 **함수를 따로 만들지 않고 코드 한줄에 함수를 만들어 그것을 호출하는 방식**이다.

여기서 **익명함수**란 말 그대로 이름이 없는 함수로써 **일급 객체**라는 특징을 갖고 있다. 또한, **일급 객체**란 함수를 값으로도 사용할 수 있으며, 파라미터로 전달 및 변수에 대입등 **다양한 연산이 가능**한 것이다.

람다식은 주로 함수형 인터페이스에 쓰이며 추상 메소드가 하나만 있는 함수형 인터페이스에 선언된 추상 메소드를 구현하는 방식으로 작성된다.

다음은 람다식의 기본 형식이다.

```java
(매개 변수 리스트) -> {함수 바디}
```

쉬운 예제를 보면,

```java
public int sum(int a, int b) {
    return a + b;
}

... // sum()을 람다식으로 표현

(a , b) -> a + b;
```

람다식에는 몇 가지 장점과 단점이 있다.

**장점** :&#x20;

1. **코드의 간결성** = 람다를 사용하면 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
2. **가독성이 높아진다.** = 코드에 개발자의 의도가 명확히 드러나 가독성이 높아진다.
3. **생산성이 높아진다.** = 함수를 만드는 과정없이 한 번에 처리할 수 있어서 생산성이 높아진다.
4. 병렬 프로그래밍이 가능하다.

**단점** :&#x20;

1. 람다를 호출하기가 까다롭고(주로 함수형 인터페이스를 정의해야 하기 때문), 디버깅이 어려워진다.
2. 람다를 남발하면 비슷한 함수가 중복 생성되어 코드가 지저분해질 수 있다.

## 개선 및 목표

* 공부를 하며 노트북을 알아 보다가 12시가 지나서 일일 회고를 작성하지 못하고 새벽에 작성한다. 다음부터는 늦지 않도록 하자.
* 이번주는 워크샵 및 노트북 교체를 하니 시간이 많이 소요 될듯 하다. 다음주 일정을 미리 해놓자.
