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
- ec2
- JWT
- 이진탐색
- Python
- SELinux비활성화
- Mac
- lsof
- 인텔리제이
- Timezon설정
- terraform
- heapq
- Jenkins
- Jenkinspipeline
- Docker
- terraform variable
- 프로그래머스
- terraform main commands
- terraform 기본개념
- algorithm
- linuxr계정설정
- Process monitoring
- binarysearch
- PrivateSubnet
- endpoint
- haproxy
- java
- session manager
- s3
- terraform backend
- terraform 설치
Archives
- Today
- Total
MONG 기술블로그
람다식 ( Lambda Function ) 본문
함수형 프로그래밍
함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 전달하여 데이터를 처리하는 기법을 말한다.
즉 데이터 처리부는 데이터만 가지고 있고, 처리 방법에 대한 인터페이스만 존재하기에 외부에서 제공된 함수에 의존하여 데이터를 처리한다.
자바는 함수형 프로그래밍을 위해 Java8부터 람다식(Lambda Function)을 지원한다.
람다식은 함수형 프로그래밍에서 데이터 처리부에 외부에서 제공되는 함수의 역할을 하며, 자바는 람다식을 익명 구현 객체로 변환하여 처리한다.
람다식을 코드 예시를 통해 알아보자
// @FunctionalInterface를 사용하여 람다식으로 사용될 binaryOperator 함수를 정의한다.
@FunctionalInterface
interface Calculable {
int binaryOperator(int x, int y);
}
class Calculator {
// 데이터
private int x;
private int y;
public Calculator(int x, int y) {
this.x = x;
this.y = y;
}
// 외부에서 정의된 Calculable 구현 객체에 따라 데이터 처리부가 달라진다.
// 이때 Calculable 클래스는 @Functionalinterface로
// 람다식을 통해 정의할 수 있다.
public int calculate(Calculable calculable) {
return calculable.binaryOperator(this.x, this.y);
}
}
public class LambdaSample {
public static void main(String[] args) {
// 데이터는 x : 3 , y : 5로 고정
Calculator calculator = new Calculator(3, 5);
// 서로 다른 람다식을 통해 데이터 처리부를 변경
int plus = calculator.calculate((x, y) -> x + y);
int minus = calculator.calculate((x, y) -> x - y);
int mul = calculator.calculate((x, y) -> x * y);
int div = calculator.calculate((x, y) -> x / y);
int mod = calculator.calculate((x, y) -> x % y);
// 결과 확인
System.out.println("plus : " + plus);
System.out.println("minus : " + minus);
System.out.println("mul : " + mul);
System.out.println("div : " + div);
System.out.println("mod : " + mod);
}
}
'Programming > Java' 카테고리의 다른 글
Java Stream (0) | 2023.03.23 |
---|
Comments