일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- redis
- 컴퓨터구조
- 알고리즘
- JavaScript
- OS
- Heap
- C
- 디자인 패턴
- Algorithm
- 자료구조
- IT
- 운영체제
- Data Structure
- MySQL
- 파이썬
- 백준
- MSA
- spring webflux
- JPA
- Proxy
- c언어
- 네트워크
- Galera Cluster
- 자바
- design pattern
- Kafka
- react
- Spring
- Java
- mongoDB
Archives
- Today
- Total
시냅스
Java 함수형 프로그래밍 본문
함수형 프로그래밍
- 순수함수(pure function)를 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutable data) 및 부작용 (side-effects)를 피하는 기본 원칙에 따라 소프트웨어를 구성하는 프로그래밍 패러다임
- 절차보다 기능에 초점을 맞춘다.
1급 객체 (first object)
- 변수나 데이터 구조 안에 넣을 수 있다.
- 파라미터로 전달할 수 있다.
- 동적으로 프로퍼티 할당이 가능
- 리턴값으로 사용할 수 있다.
- 자바의 경우 함수형 인터페이스를 통해 구현이 가능
순수 함수 (pure function)
- 순수 함수란 같은 입력에 대해 항상 같은 출력을 반환하는 함수
- 멀티스레드에서도 안전하고 병렬처리 및 계산도 가능하다.
- 동일한 입력에 대해 항상 같은 값을 반환한다.
- 부수효과 side effect 가 없는 결과를 생성하고 함수에서 인자를 변경하거나 프로그램의 상태를 변경하지 않는다.
- side effect
- 함수의 실행으로 함수 외부 상태가 변경되는 것
- 함수외부 변수의 값이 변경됨
- 예외나 오류로 인하여 프로그램이 중단됨
- side effect
예시
public class Functional {
@FunctionalInterface
interface Calc {
int add();
}
public static void main(String[] args) {
int result = run(() -> 3 + 4);
System.out.println(result);
}
public static int run(Calc c) { // 실행을 위임한다.
return c.add();
}
}
- 참고, FunctionalInterface
- FunctionalInterface는 함수를 일급객체로 사용할 수 있게 만들어 준다.
- 즉, (a, b) → a + b 를 파라미터로 받았고 행위도 값으로 취급하였다.
- 또한 함수 재사용에 용이하다
- FunctionalInterface에는 오직 하나의 함수만 존재해야한다.
'Java, Spring' 카테고리의 다른 글
Java Annotation Processor 정리 (0) | 2023.02.11 |
---|---|
Java 가비지 컬렉션 Garbate Collection 정리 (0) | 2023.02.08 |
Spring 트랜잭션 전파 정리 (0) | 2022.09.03 |
Spring 선언적 트랜잭션과 AOP, 프록시 객체에 대한 이해 (0) | 2022.09.03 |
Spring MyBatis 정리 (0) | 2022.09.03 |
Comments