Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Exception
- JPQL
- 스프링 핵심 기능
- Thymeleaf
- 김영한
- pointcut
- Greedy
- SpringBoot
- jpa
- AOP
- 인프런
- 자바
- spring
- 백준
- Spring Boot
- 알고리즘
- transaction
- 그리디
- http
- springdatajpa
- Proxy
- kotlin
- java
- JDBC
- QueryDSL
- db
- Android
- 스프링 핵심 원리
- Servlet
- 스프링
Archives
- Today
- Total
개발자되기 프로젝트
람다식 본문
1. 함수형 프로그래밍과 람다식
- 자바는 객체지향 프로그래밍 : 기능을 수행하기 위해서는 객체를 만들고 해당 객체 내부에 맴버 변수 선언 및 기능을 수행하는 메서드를 구현해야 함.
- 자바8부터 함수형 프로그래밍 방식을 지원 : 람다식
- 함수형 프로그래밍? : 함수의 구현과 호출만으로 프로그램이 수행되는 방식
- 함수형 프로그래밍은 순수함수(pure fucntion)을 구현하고 호출함으로써 외부 자료에 side effect를 주지 않도록 구현하는 방식. 순수 함수란 매개변수만을 사용하여 만드는 함수. 즉 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에 영향을 주지 않음
- 함수를 기반으로 하는 프로그래밍이고 입력받는 자료 이외에 외부 자료를 사용하지 않아 여러 자료가 동시에 수행되는 병렬처리가 가능함. 함수형 프로그래밍은 함수의 기능이 자료에 독립적임을 보장함. 이는 동일한 자료에 대해 동일한 결과를 보장하고, 다양한 자료에 대해 같은 기능을 수행할 수 있음.
2. 람다식 문법
- 익명 함수 만들기
- 매개 변수와 배개 변수를 이용한 실행문 (매개변수) -> (실행문;)
- 두 수를 입력받아 더하는 예
int add(int x, int y){
return x+y;
}
- 람다식으로 변환
(int x, int y) -> {return x+y;}
- 매개 변수가 하나인 경우 자료형과 괄호 생략 가능
str -> {System.out.println(str);}
- 매개변수가 두 개 이상인 경우 괄호생략 불가
x, y -> {return x+y;} // 오류
- 실행문이 한 문장인 경우 중괄호 생략 가능
str -> System.out.println(str);
- 실행문이 한 문장이어도 return문은 중괄호 생략 불가
(x, y) -> return str.length() //오류
- 실행문이 한 문장의 반환문인 경우에는 return 과 중괄호 모두 생략
- return과 중괄호 같이 생략해야 가능
(x, y) -> x+y;
str -> str.length;
3. 예제
- 인터페이스 선언
public interface Add {
int add(int x, int y);
}
- 사용할 때 바로 구현해 버림
class AddTest {
public static void main(String[] args) {
//add를 바로 구현해버리기
Add addXY = (x, y) -> {return x+y;};
int result = addXY.add(1, 2);
Add multiplyXY = (x, y) -> x*y;
int result2 = multiplyXY.add(2,3);
}
}
4. GitHub: 211027 Lambda
'Java > 다양한 기능' 카테고리의 다른 글
객체지향 프로그래밍 vs 람다식 구현 (0) | 2021.10.27 |
---|---|
Stream (0) | 2021.10.27 |
함수형 인터페이스, 람다식 구현 및 사용 (0) | 2021.10.27 |
익명 내부 클래스 활용 (0) | 2021.10.26 |
내부 클래스 정의, 유형 (0) | 2021.10.26 |
Comments