ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 람다식
    Programming Language/Java & Kotlin 2019. 6. 13. 01:05
    반응형

    람다식 (Lambda expression)

    • JDK 1.8 부터 추가
    • 람다식의 도입으로 인해 자바는 객체지향언어인 동시에 함수형 언어가 되었다.
    • 람다식 덕분에 함수형 언어의 장점들을 자바에서도 누릴 수 있게되었다.

    람다식이란?

    • 람다식은 메서드를 하나의 식(expression)으로 표현한 것이다.
    • 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 익명 함수(anonymous function)이라고도 한다.
    • 모든 메서드는 클래스에 포함되어야 하므로 클래스도 새로 만들어야 하고, 객체도 생성해야만 비로소 이 메서드를 호출할 수 있다. 그러나 람다식은 이 모든 과정없이 오직 람다식 자체만으로도 이 메서드의 역할을 대신할 수 있다.
    • 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다.
    • 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해졌다.

    람다식 작성하기

    • 람다식은 '익명 함수' 답게 메서드에서 이름과 반환 타입을 제거하고 매개변수 선언부와 몸통 {} 사이에 '->' 를 추가한다.
    반환타입 메서드이름 (매개변수 선언) {
        문장들 
    }
    (매개변수 선언) -> {
        문장들 
    }

    메서드를 람다식으로 변환하기

    int max(int a, int b) {
        return a > b ? a : b

    }

    (int a, int b) -> { return a > b ? a : b; }

    (int a, int b) -> a > b ? a : b

    (a, b) -> a > b ? a : b

    void printVar (String name, int i) {
        System.out.println(name + "=" + i);

    }

    (String name, int i) -> 
    { System.out.println(name + "=" + i);

    (name, i) -> { System.out.println(name + "=" + i);

    (name, i) -> System.out.println(name + "=" + i);

    int square(int x) {
        return x * x;

    }

    (int x) -> x * x

    (x) -> x * x

    x -> x * x

    int roll() {

        return (int) (Math.random() * 6);

    }

    () -> { return (int) (Math.random()*6); }

    () -> (int) (Math.random() * 6)

    int sumArr(int[] arr) {
        int sum = 0;

        for (int i : arr)
            sum += i;

        return sum;

    }

    (int[] arr) -> {
        int sum = 0;

        for (int i : arr)

                sum += i;

        return sum;

    }

    ##

    반응형
Designed by Tistory.