람다식의 정의를 알기 위해서 간단하게 함수형 프로그래밍에 대해서 먼저 정의해보겠습니다.
함수형 프로그래밍이란?
함수를 데이터 처리부로 보내 데이터를 처리하는 기법이라 책에 정의되어 있습니다.
그렇다면 데이터 처리부란 무엇일까요??
말 그래도 데이터를 처리하기 위한 부분으로써 데이터를 가지고 있다가 함수를 이용해, 가지고 있는 데이터를 처리하는
역할을 합니다.
즉 데이터 처리부는 함수에서 사용할 재료를 가지고 있다가, 함수를 이용해서 데이터를 처리합니다. 그리고 이것을 함수형 프로그래밍이라 합니다!
이제 다시 본론으로 돌아가서 람다식에 대해 설명하도록 하겠습니다.
(참고로 잘 이해가 안 갈 수 있으니 순서대로 전부 보시는 편이 좋습니다.)
람다식이란 간단히 말해서 java 8부터 함수형 프로그래밍을 지원하기 위해서 사용되는 일종의 함수라고 생각하시면 됩니다.
기본 형태는 다음과 같습니다.
람다식: (매개변수, .....) -> {처리내용}
그리고 자바는 람다식을 익명 구현 객체로 변환한다고 설명이 되어있는데. 이것이 어떤 것인지는 예제를 통해서 확인해보겠습니다.
여기에 interface가 있습니다. 그리고 이것을 익명(이름없음)으로 구현한 객체 익명 구현 객체는 다음과 같습니다.
이러한 인터페이스를 익명으로 구현한 객체. 이것을 아래와 같이 간략하게 만든 것을 람다식이라 할 수 있습니다.
(x, y) -> { 처리내용};
조금 다른 예제를 가져와서 계속 설명해 보겠습니다.
여기에 action 메소드가 있습니다.
이 메소드는 calculable 인터페이스의 구현 객체를 매개변수로 받는다는 것을 확인할 수 있습니다.
하지만 바로 action 메소드를 활용할 수는 없습니다.
왜냐하면 action 메소드는 데이터 처리부. 즉 데이터를 가지고 있으며, 그 데이터를 람다식(함수)을 가져와서 처리하는 부분인데, 위에는 람다식이 정의가 안되어 있기 때문입니다.
그래서 아래와 같이 람다식을 정의해줘야만 합니다.
action( (x, y) -> {
int result = x + y;
System.out.println(result):
};
이 부분이 흐름인데, 처음에는 이해가 안되더라도 잘 보시면 어떤 식으로 흐르는지 이해가 되실 겁니다.
마지막 예시로 (저의 경우 Test class 이름이 Board이기에 그것을 활용했습니다.)
데이터 처리부 및 람다식을 같이 구현해봤습니다.
흐름은 test class에서 객체 생성 - 그 객체의 action 메소드 호출 - 호출하려는 action 메소드의 매개변수는 calculable 인터페이스의 구현 객체가 들어와야 함을 의미한다. - 마지막으로 호출한 action 메소드의 데이터 int x, int y 값을 가지고 calculable의 익명 구현객체, 다시말해 람다식(함수)을 실행한다.
'It Study > 이것이 자바다(개정판)' 카테고리의 다른 글
매개변수가 있는 람다식 작성 요령 요약 (0) | 2023.12.11 |
---|---|
매개변수가 없는 람다식 예제연습 해보기 (0) | 2023.12.08 |
(10.02 수정)제네릭이란? (0) | 2023.06.28 |
싱글톤 패턴 간단개념 (0) | 2023.04.03 |
main() 메소드의 String[] 매개변수 용도 및 활용 (0) | 2023.03.04 |