본문 바로가기
언어/Kotlin

코틀린 고차함수

by 김어찐 2022. 5. 26.
728x90
package highorderfunc
// 매개변수로 함수를 받는 함수
fun main() {
    val t1 = fun(x1: Int, x2: Int): Int {
        return x1 + x2
    }
    testFunc1(t1,100,200)

    testFunc1(fun(x1:Int,x2:Int):Int{
        return x1 - x2
    },100,200)

    val lambda1 = {x1:Int, x2:Int -> x1 *x2}
    testFunc1(lambda1,100,200)
    testFunc1({x1:Int,x2:Int -> x1/x2},200,100)

    val t2 = testFunc2()
    val r2 = t2(100,200)
    println("r2 = ${r2}")

    val t3 = testFunc3()
    val r3 = t3(100,200)
    println("r3 = ${r3}")


    testFunc4({x1:Int -> x1 +100},200)
    // 매개변수가 "하나"인 람다함수는 it 사용가능
    testFunc4({it +1000},200)

    testFunc5(100,200,{x1:Int,x2:Int -> x1 + x2})
    //함수 매개변수가 마지막이면 아래처럼 가능
    testFunc5(100,200){x1:Int,x2:Int -> x1 + x2}

    testFunc6 ({x1:Int -> println(x1)})
    testFunc6 { println(it) }
}

fun testFunc1(m1:(Int,Int)->Int,a1:Int,a2:Int){
    val r1 = m1(a1,a2)
    println("r1 = ${r1}")
}

fun testFunc2(): (Int,Int) -> Int{
    return fun(x1:Int,x2:Int):Int {
        return x1+ x2
    }
}

fun testFunc3() : (Int,Int) -> Int {
    return {x1:Int,x2:Int -> x1 - x2}
}

fun testFunc4(m1: (Int) -> Int, a1: Int) {
    val r4 = m1(a1)
    println("r4 = ${r4}")
}

fun testFunc5(a1: Int, a2: Int, m1: (Int, Int) -> Int) {
    val r5 = m1(a1, a2)
    println("r5 = ${r5}")
}

fun testFunc6(m1: (Int) -> Unit) {
    m1(100)
}
728x90

'언어 > Kotlin' 카테고리의 다른 글

코틀린 문자열  (0) 2022.05.26
코틀린 배열  (0) 2022.05.26
코틀린 infix  (0) 2022.05.26
코틀린 확장함수  (0) 2022.05.26
코틀린 함수형 프로그래밍  (0) 2022.05.25