람다식이란 자바의 메소드를 간결한 함수 식으로 표현한 것으로 함수형 프로그래밍의 기본이 되는 함수식입니다.
반환값이라던가 변수 타입, 괄호 등을 생략하여 코드를 간결하게 표현할 수 있습니다.
코드를 간결하게 표현하는 방식에 함수의 이름과 반환값이 생략되므로 익명함수라고도 불립니다
//기존 함수.
int add(int a, int b){
return a+b;
}
//람다식을 사용
(a,b) -> a+b;
여기서 주의할 점은, 자바스크립트를 학습한 사람이라면 익명 화살표 함수에 익숙할 텐데,
자바스크립트의 화살표 함수에는 화살표를 "=>" 이렇게 표현하는 반면 Java에서는 "->" 로 표현하는 차이가 있다.
람다식도 결국은 객체이다.
MyFunction myfunc = (str) -> System.out.println(str);
myfunc.print("Hello");
자바는 메소드를 단독으로 선언할 수는 없고, 람다 함수식을 변수에 대입하고 변수에서 함수를 호출하는것으로
사용하고있다. 이유는 함수도 변수처럼 메모리 주소를 가지기 때문입니다.
Java에서는 클래스를 사용하여 메소드를 사용하기 때문에 메소드 자체에 메모리를 할당하는 것을 알기 어려웠지만,
람다식을 사용하면 함수의 주소를 사용하기 때문에 함수형 프로그래밍이 가능해집니다.
람다식의 변수 할당
interface IAdd {
int add(int x, int y);
}
public class Main {
public static void main(String[] args) {
IAdd lambda = (x, y) -> x + y; // 함수를 변수에 할당
lambda.add(1, 2); // 함수 사용
}
}
출처: https://inpa.tistory.com/entry/☕-Lambda-Expression [Inpa Dev 👨💻:티스토리]
익명 이너 클래스 ( 익명 함수)
함수를 매개변수에 담거나 변수에 할당하거나 할 수 있는것은 람다식이 익명 함수이며 익명 함수는 일급 객체로
취급되기 때문,
여기서 일급 객체란 "사용시 다른 요소들과 아무런 차별이 없다" 를 의미하고 다음 3가지 조건을 만족합니다.
- 모든 일급 객체는 변수나 데이터에 담을 수 있어야 한다.
- 모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 한다.
- 모든 일급 객체는 함수의 리턴값으로 사용 할 수 있어야 한다.
'부트캠프 > TIL' 카테고리의 다른 글
[부트캠프] TIL - 리팩토링 마무리 (0) | 2024.08.07 |
---|---|
[부트캠프] TIL - 리팩토링 (0) | 2024.08.06 |
[부트캠프] TIL - 함수형 프로그래밍, Java8 (0) | 2024.08.04 |
[부트캠프] TIL - 팀프로젝트 2일차 회고 Git conflict (0) | 2024.08.03 |
[부트캠프] TIL - JOIN, UNION (0) | 2024.08.02 |