코틀린: 함수정의시 = 대신 {} 를 사용하면 type mismatch 가 발생함.

조회수 726회
fun main(args:Array<String>){

    var result:Int

    result = highOrder({x:Int, y:Int -> x+y}, 10, 20)
    println(result)
}

fun highOrder(sum:(Int, Int)->Int, a:Int, b:Int) = sum(a,b)

의 경우 정상적으로 30이 반환되는데

fun main(args:Array<String>){

    var result:Int

    result = highOrder({x:Int, y:Int -> x+y}, 10, 20)
    println(result)
}

fun highOrder(sum:(Int, Int)->Int, a:Int, b:Int) {
    return sum(a,b)
}

로 표현을 바꿔서 컴파일하면 type mismatch가 뜹니다. 코틀린 함수 문법에서 두 형태 모두 같은 취급이 되는것이 아닌가요?

  • `fun highOrder(sum:(Int, Int)->Int, a:Int, b:Int) : {` 부분을 `fun highOrder(sum:(Int, Int)->Int, a:Int, b:Int):Int {`로 수정하면 잘 될 겁니다. 함수 뒤에 "="을 사용하여 함수를 구현할 경우 리턴 값을 자동으로 인식해서 함수의 리턴 값을 정해줍니다. 하지만 괄호를 사용해서 함수를 구현하면 사용자가 직접 리턴 타입을 지정해줘야합니다. 알 수 없는 사용자 2020.12.24 15:32

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)