Kotlin

[Kotlin] 람다 표현식

시커먼수르 2022. 1. 13. 09:45
fun sum (x1 : Int, x2 : Int) : Int {
    return x1 + x2
}

fun Calculator(a : Int, b : Int, p : (Int, Int) -> Int) {
    println("$a , $b -> ${p(a,b)}")
}

fun Square( a:Int, p : (Int) -> (Int)) {
    println("$a, ${p(a)}")
}

fun printInfo(p : () -> Unit) {
    print("Calcuator version : ")
    p()
}

fun main() {
    // 기본적인 호출 방식
    Calculator(2,1, { c : Int, d : Int -> c + d})

    // 타입 추론이 가능하다면 자료형을 생략 가능
    Calculator(2,1, { c, d -> c + d})

    // 람다식이 파라미터 맨 마지막이라면 함수 밖으로 람다 분리 가능
    Calculator(2, 1) { a, b -> a - b }
    // 람다 구문에 함수를 넣을 때은 :: 키워드를 사용
    Calculator(2,5, ::sum)

    // 기본적인 호출 방식
    Square(2, {a -> a* a})
    // 람다식이 파라미터 맨 마지막이라면 함수 밖으로 람다 분리 가능
    Square(2) { a -> a* a}

    // 람다식의 인자가 한개라면 인자를 생략할 수 있다.
    Square(2) { it * it}

    // 기본 함수 호출 법
    printInfo({println("1.0")})
    // 마지막 파라미터가 람다식이기 때문에 괄호 밖으로 람다를 분리
    printInfo() { println("1.0")}
    // 만약 파라미터가 람다식 한개만 있다면 괄호도 생략 가능
    printInfo { println("1.0") }
}