코드 그라데이션

후발대 16일차 전체 코드 본문

Java/후발대

후발대 16일차 전체 코드

완벽한 장면 2023. 2. 12. 09:11

후발대수업_16.

람다식(Lambda), 함수형 인터페이스

1. 람다 함수(Lambda Function)란?

람다 함수는 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수라고도 한다.Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고있다.

2. 람다 함수의 특징

  • 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다.즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다.
  • 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다.

3. 람다식 표현

  • 파라미터와 몸체로 구분된다.
  • 파라미터와 몸체 사이에 > 구분을 추가하여 람다식을 완성시킨다.
  • 몸체 부분이 단일 행일 경우 중괄호와 return문을 생략할 수 있다.

( 파라미터 ) -> { 몸체 }

4**. 함수형 인터페이스**

함수형 인터페이스의 조건

  • @FunctionalInterface 어노테이션을 선언해야한다.
  • 추상 메소드가 한개만 선언되어야한다.
  • interface로 선언되어야한다.

 

 

실습 코드

_03_Lambda

package com.sparta.hbd04.prac01.prac15;


public class _03_Lambda {
    public static void main(String[] args) {
     // 람다식
     // (전달값1, 전달값2) -> { 코드 }
    }

//    public void print() {
//        String s = "test";
//        System.out.println(s);
//    }

//    () -> {
//        String s = "test";
//        System.out.println(s);
//    }

//    public void print(String s) {
//        System.out.println(s);
//    }

//    s -> System.out.println(s)

//    public int add(int x, int y) {
//        return x+y;
//    }

//    (x, y) -> x + y

}

 

Convertible

package com.sparta.hbd04.prac01.prac15.converter;

public interface Convertible {
    void convert(int USD);
}

 

KRWConverter

package com.sparta.hbd04.prac01.prac15.converter;

public class KRWConverter implements Convertible{

    @Override
    public void convert(int USD) {
        // 1달러 = 1200원
        System.out.println(USD + " 달러 = " + (USD * 1200) + " 원");
    }
}

 

ConvertibleWithNoParams

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithNoParams {
    void convert();
}

 

ConvertibleWithTwoParams

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithTwoParams {
    void convert(int USD, int KRW);
}

 

ConvertibleWithReturn

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithReturn {
    int convert(int USD, int KRW);
}

 

_04_FunctionalInterface

package com.sparta.hbd04.prac01.prac15;

import com.sparta.hbd04.prac01.prac15.converter.*;

public class _04_FunctionalInterface {
    public static void main(String[] args) {
        KRWConverter converter = new KRWConverter();
//        converter.convert(2);

//        convertUSD((USD) -> System.out.println(USD + " 달러 = " + (USD * 1200) + 
//" 원"), 1);

        Convertible convertible = (USD) -> System.out.println(USD + " 달러 = " +
 (USD * 1200) + " 원");
        convertUSD(convertible, 2);

        // 전달값이 하나도 없다면?
        ConvertibleWithNoParams c1 = () -> System.out.println("1 달러 = 1200 원");
        c1.convert();

        // 두 줄 이상의 코드가 있다면?
        c1 = () -> {
            int USD = 5;
            int KRW = 1200;
            System.out.println(USD + " 달러 = " + (USD * KRW) + " 원");
        };
        c1.convert();

        // 전달값이 2개인 경우?
        ConvertibleWithTwoParams c2 = (d, w) -> System.out.println(d + " 달러 = " + (d * w) + " 원");
        c2.convert(10,1200);

        // 반환값이 있는 경우?
        ConvertibleWithReturn c3 = (d, w) ->  d * w;
        int result = c3.convert(20, 1200);
        System.out.println("20 달러 = " + result + " 원");
    }

    public static void convertUSD(Convertible converter, int USD) {
        converter.convert(USD);
    }
}

 

참고자료

https://true-bird.tistory.com/84

728x90

'Java > 후발대' 카테고리의 다른 글

첫 번째 과제 개념정리  (0) 2023.02.13
후발대 16일차 설명 추가 코드  (0) 2023.02.12
후발대 15일차 설명 추가 코드  (0) 2023.02.11
후발대 15일차 전체 코드  (0) 2023.02.11
후발대 14일차 설명 포함 코드  (0) 2023.02.03
Comments