Christmas Pikachu Lambda(람다식) 활용
개발일지/자바

Lambda(람다식) 활용

ZI_CO 2022. 10. 5.


람다식(Lambda expression)

 


함수형 프로그래밍과 람다식

자바 객지 지향 프로그래밍 : 
기능을 수행하기 위해서 객체를 만들고 그 객체 내무에 멤버 변수를 선언해서 수행하는 메소드를 구현 한다. 


자바 8 부터는 함수형 프로그래밍 방식을 지원하고 이름 람다식이라고 한다. 

함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 함수형 프로그래밍 

함수형 프로그래밍(Functional Programming : FP)

함수형 프롷그래밍은 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향 주지 않도록 구현하는 방식 입니다 
순수 함수란 매개변수만을 사용하여 만드는 함수라고 보면 된다. (pure function)
즉, 함수 내부에서 함수 외부에 있는 변수에 영향을 주지 않습니다.

*** 람다식 문법 *** 제공하고 있다. 

익명 함수 만들기
매개 변수와 화살표 함수를 이용해서 실행문을 만들어준다. 
() ->{실행문;} 

>>> 식을 선언하는 방법 <<<
int add(int x, int y) {
return x + y;


람다식으로 표현하면 
(int x, int y) -> {return x + y}


* 매개변수가 없는 함수 
void print() {
System.out.p;rintn("안녕");
}

() -> {System.out.println(안녕);}


* 매개변수가 하나인 경우 자료형과 괄호 생략 가능하다. 
void print2(String str) {
System.out.println(str);
}

(String str) -> {System.out.println(str)}
str -> System.out.println(str)     <-- String 자료형 생략가능, 중괄호 안에 실행문이 한문장이면 중괄호도 생략이 가능하다.

 


코드로 살펴보자

 

 

먼저 기능을 수행 해야한다. 수행은? 인터페이스!!! 먼저 인터페이스를 생성해 추상 메소드를 만들어준다.

이때 꼭 습관화 해야할게 @FunctionalInterface을 써주자 람다식은 추상메소드가 두개 존재지 못한다. 하나만 존재하기 위해서 @FunctionalInterface 을써주게 되면 메소드가 추가적으로 생성시 에러를 발생을 시켜준다. 누가 코드를 보더라도 람다식임을 알수가있다. 

 

밑 그림의 코드에서 보면 반환값이 void가 되어 있고, 매개 변수로 두개의 String값을 받도록 해주었다. 여기까지의 과정을 메소드의 선언이라고 한다.

 

람다식을위한 메소드를 선언을 했으면 이제 메소드를 사용할 준비가 된것이다 이제 람다식을 선언을 하게되면

인터페이스를 선언후 ()괄호안에 매개변수를 써준다. 이때 자료형은 생략!!!

그리고나서 화살표 함수를 써주고 중괄호를 써준다 하지만 밑에의 코드에서는 실행문이 한줄이다. 그래서 중괄호를 생략한 코드이다. (실행문 1줄 -> 중괄호 생략 가능)

출력문안에는 매개변수를 String값을 더해주게끔 해주었다. 

 

인터페이스에 접근을해서 람다식을 사용하기위해 준비된 메소드를 호출하여 원하는 String값을 넣어주면 얼마든지

값을 변경하여 추가적으로 사용이 가능하다

댓글