반갑습니다!

[Kotlin] 함수 본문

Kotlin

[Kotlin] 함수

김덜덜이 2020. 6. 9. 14:23

함수의 정의

코틀린은 함수를 다음과 같이 선언한다.

fun 함수 이름([변수 이름: 자료형, 변수 이름: 자료형, ...])[: 반환 자료형] {
    표현식...
    [return 반환값]
}

이 때 []에 해당하는 부분은 생략할 수 있는 부분이다. 함수가 반환하는 값이 없는 경우는 Unit을 반환하는데, 이는 일반적으로 사용하는 void와 같은 개념이라고 이해하면 된다. 즉, Unit은 아무런 의미가 없는 반환값이다.

함수의 축약형

코틀린에서는 함수를 축약해서 쓸 수 있다는 특징이 있다.

fun sum(a: Int, b: Int): Int{
    return a + b
}

위와 같은 함수는

fun sum(a: Int, b: Int): Int = a + b

또는 컴파일러의 추론을 이용해

fun sum(a: Int, b: Int) = a + b

형태로 축약할 수 있다.

지역 함수

코틀린에서는 지역 함수의 선언을 지원한다. 이 떄 지역 함수는 호출하기 전에 정의가 되어있어야 한다.

fun main(){
    var result = sum(1, 2)    // 컴파일 에러

    fun sum(a: Int, b: Int) = a + b
}

위와 같이 함수를 선언하기 전에 호출하게 되면 컴파일 에러가 발생하게 된다.

fun main(){
    fun sum(a: Int, b: Int) = a + b

    var result = sum(1, 2)
    println("Result : $result")
}
/*
 * 실행 결과
 * Result : 3
 */

위와 같이 지역 함수를 미리 정의하고 호출하게 되면 문제 없이 실행되는 것을 알 수 있다.

매개변수의 기본값

코틀린에서는 매개변수에 기본값을 지정해줄 수 있다. 매개변수에 기본값을 지정하게 되면 함수 호출 시 해당 매개변수의 인자를 전달받지 않았을 때 기본값을 인자로 함수를 호출하게 된다. 이 때 기본값을 지정한 매개변수들은 기본값이 없는 매개변수들 뒤에 와야한다.

fun add(a: Int, b: Int = 3): Int{
     return a + b   
}

fun main() {
    var a = add(2, 3)
    var b = add(5)
    println("$a $b")
}

/*
 * 실행결과
 * 5 8
 */

가변 인자

함수를 정의하다보면 인자의 개수를 정하기 어려운 경우가 있다. 이런 경우를 위해 코틀린에서는 가변 인자 기능을 제공한다. 가변 인자를 선언하기 위해서는 vararg 라는 키워드를 선언해야한다.

fun sum(vararg number: Int): Int{
    var ret = 0
    for (num in number){
        ret += num
    }
    return ret
}

fun main() {
    var a = sum(1, 2, 3)
    var b = sum(1, 2, 3, 4, 5)
    println("$a $b")
}

/*
 * 실행결과
 * 6 15
 */

'Kotlin' 카테고리의 다른 글

[Kotlin] 조건문  (0) 2020.06.15
[Kotlin] 함수형 프로그래밍  (0) 2020.06.09
[Kotlin] 비트 연산  (0) 2020.06.08
[Kotlin] 자료형의 변환  (0) 2020.06.03
[Kotlin] Null vs Non-Null  (0) 2020.05.01