Kotlin에서 함수는 코드를 모듈화하고 재사용 가능하게 만들어주는 중요한 구성 요소입니다.
함수는 매개변수를 가질 수도, 가지지 않을 수도 있으며, 반환값을 가질 수도, 가지지 않을 수도 있습니다.
이 글에서는 Kotlin 함수의 기본 사용법을 매개변수와 반환값에 따라 구분하여 설명합니다.

함수 정의의 기본 구조

fun functionName(parameters): ReturnType {
    // 함수 본문
}
  • fun은 함수를 정의할 때 사용하는 키워드입니다.
  • functionName은 함수의 이름을 지정합니다.
  • parameters는 함수가 받을 입력값들입니다. 각 매개변수는 이름과 타입을 가질 수 있습니다.
  • ReturnType은 함수가 반환하는 값의 타입입니다. 반환값이 없으면 생략할 수 있습니다.
  • 함수 본문은 {} 안에 들어가며, 함수의 로직을 정의합니다.

매개변수와 반환 타입

  • 매개변수: 함수가 받는 입력값입니다. 매개변수의 이름과 타입을 지정합니다.
fun add(a: Int, b: Int): Int {
    return a + b
}

// 함수 호출
add(5, 3)

이 함수는 두 개의 Int 타입 매개변수를 받아서 Int 타입의 결과를 반환합니다.

  • 반환 타입: 함수가 반환할 값의 타입입니다. 반환값이 없으면 Unit 타입이 자동으로 사용됩니다.
fun printMessage() {
    println("Hello, World!")
}

이 함수는 값을 반환하지 않으므로 반환 타입을 생략할 수 있습니다.

단일 표현식 함수

함수 본문이 단일 표현식일 때는 중괄호 대신 =를 사용할 수 있습니다.
이 경우 return 키워드와 중괄호 없이 간결하게 함수를 정의할 수 있습니다.

Kotlin에서는 함수의 본문이 단일 표현식일 경우, 반환 타입을 명시하지 않고도 Kotlin이 자동으로 타입을 추론합니다.
예를 들어, 다음과 같은 함수는 반환 타입을 명시하지 않더라도 Kotlin이 타입을 자동으로 추론합니다:

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

디폴트 매개변수 값

매개변수에 기본값을 제공할 수 있어, 호출 시 값을 생략할 수 있습니다.

fun greet(name: String = "Guest") {
    println("Hello, $name!")
}

이 함수는 name이 주어지지 않으면 기본값 “Guest”를 사용합니다.
※ 코틀린에서 문자열 내에 변수를 포함시키려면 ${} 구문을 사용합니다. 그러나 간단한 변수는 그냥 $ 기호로도 직접 사용할 수 있습니다.