ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Kotlin ] 람다식 ( Lambda )
    Kotlin 2020. 8. 4. 15:07

     

    이 글은 부스트코스에서 코틀린 강의를 들으며 정리한 글 입니다


    Index


     

    변수에 지정된 람다식 ^

    람다식 표현의 예 ( 자료형 생략 )

    람다식을 표현할 경우, 위의 코드와 같이 자료형을 생략할 수 있습니다.

    만약 선언 자료형과 매개변수 자료형이 모두 생략되어 있다면 추론이 불가능하여 Error가 발생합니다.

    // 추론이 불가능한 예
    val multi = { x, y -> x * y }

    마지막 표현식 반환

    표현식이 2줄 이상이고 반환 값이 있는 경우 마지막 표현식이 반환됩니다.

    람다식 내부에 람다식 선언

    위의 코드에서 람다식 선언부의 자료형을 생략하여도 추론이 가능합니다.

     

    반환 자료형이 없거나 매개변수가 하나 있을 경우

    만약 반환 자료형이 없을 경우 식 내부에 화살표(→)가 생략됩니다.

     

    위의 코드에서는 반환 자료형이 없는 경우 Unit으로 반환 값이 없음을 표현해주었지만 생략하여도 추론이 가능합니다.

    매개변수가 하나인 경우 선언부의 자료형을 생략하기 위해서는 매개변수의 자료형을 명시해야 합니다.


    람다식과 고차함수 호출하기 ^

    고차 함수를 사용하면 다른 함수를 인자로 사용하거나 함수를 결과 값으로 반환하는 함수를 사용할 수 있습니다.

     

    고차 함수를 사용할 때 람다식을 사용하여 인자나 매개변수, 반환 값을 사용할 수도 있습니다.

     

    값에 의한 호출 ^

    람다식 함수가 인자로 전달될 경우, 람다식 함수는 값으로 처리되어 전달됩니다.

     

    Call by Value에 의한 호출 순서  [ 출처 : https://www.edwith.org/boostcourse-mo-kotlin-basic1/lecture/59976/ ]

     

    이름에 의한 호출 ^

    람다식 함수의 이름을 인자로 넣어 사용하는 경우에는 람다식 함수 자체가 매개변수에 복사되고 해당 함수가 호출되 사용되지 전까지는 람다식 함수가 실행되지 않습니다. 함수가 호출되어 사용될 때, 람다식 함수 내용이 실행됩니다. 

     

    Call by Name에 의한 호출 순서 [ 출처 : https://www.edwith.org/boostcourse-mo-kotlin-basic1/lecture/59976/ ]

     

    참조에 의한 호출 ^

    람다식이 아닌 일반 함수를 또 다른 함수의 인자에서 호출하는 고차함수의 경우 참조에 의한 호출로 사용할 수 있습니다. 이러한 경우 함수 이름 뒤에 붙는 소괄호()와 인자를 생략하고 함수 이름 앞에 콜론 기호 2개(::)를 붙이면 일반 함수를 참조에 의한 호출로 사용할 수 있게됩니다. 

     


    매개변수 개수와 구성에 따른 람다식 사용 ^

    매개 변수와 인자 개수에 따라 람다식의 생략된 표현이 가능하기 때문에 코드를 더 간략화할 수 있습니다.

    매개변수가 없는 경우 ^

    매개변수가 없으면 화살표 기호(→)가 사용되지 않습니다. 소괄호는 생략할 수 있습니다.

     

     

    매개 변수가 1개인 경우 ^

    매개 변수가 1개인 경우, 화살표 표기를 생략하고 it으로 대체할 수 있습니다. 그리고 매개변수가 없는 경우와 같이 소괄호를 생략할 수 있습니다.

     

     

    매개 변수가 2개 이상인 경우 ^

    맵개변수가 2개 이상이 되면 it을 사용하여 변수를 생략할 수 없습니다. 하지만 필요한 경우, 언더바(_)를 사용하여 특정 매개변수를 생략할 수 있습니다.

     

    매개변수의 개수가 2개 이상인 경우
    특정 매개변수를 생략한 경우

     

    일반 매개변수와 람다식 매개변수를 같이 사용하는 경우 ^

    일반 매개변수와 함께 사용하는 경우 람다식 매개변수가 마지막 인자 위치이면 소괄호() 바깥으로 분리 가능합니다. 하지만 (람다식, Arg1, Arg2)의 순서와 같이 람다식이 마지막이 아닌 경우는 소괄호() 바깥으로 분리할 수 없습니다.

     

    두 개 이상의 람다식을 매개변수로 가진 경우 ^

    람다식 인자의 개수와 상관 없이 마지막 인자에 위치한 매개변수만 소괄호()를 생략할 수 있습니다.

     

     

     

    출처

    댓글

Designed by Tistory.