コトリン5-1ランダと高次関数

7926 ワード

//1. 람다함수는 익명 함수.
//일반 함수는 fun으로 정의하지만 람다는 정의 x.
val sum2 = {n1:Int, n2:Int -> n1+n2}
val printing = {println("hello")}

fun main(){
    sum2(1, 2)
    printing()
    some(4)
}

//1-1.매개변수가 1개밖에 없는 경우 다르게도 쓸 수 있다.
val some1 = {n1:Int -> println(n1)}
val some2: (Int)->(Unit) = {println(it)}


//1-2. 복잡한 람다함수
val some = {n1:Int, n2:Int ->
    println("hello")
    n1+n2
}

fun main(){
    println(some(1,2))
}


//1-3. 별명 typealias
typealias MyInt = Int
typealias MyType = (Int, Int) -> Boolean

fun main(){
    val d1:MyInt = 10
    val someFun:MyType = {n1:Int, n2:Int ->
        n1>n2
    }

    println(someFun(1,2))
}



//2. 고차함수는 매개변수나 반환값으로 함수를 이용함.
fun hofFun(arg:(Int)-> Boolean):()->String{
    val result = if(arg(10)){
        "valid"
    }else{"invalid"}
    return {"hofFun result : $result"}
}

fun main(){
    val result = hofFun({n->n>0})
    println(result())
}