Kotlin 문법 정리 - 함수

김원기·2026년 4월 27일

Kotlin TIL

목록 보기
5/6

함수 (Function)

코틀린에서 함수는 독립적으로 존재할 수 있으며, 자바보다 훨씬 간결하고 유연하게 선언할 수 있어 '코틀린의 꽃'이라 불린다.

1. 함수 선언 기본

자바와 가장 큰 차이점은 파라미터의 이름이 타입보다 먼저 오며, 반환 타입이 함수 정의 끝에 위치한다는 점이다.

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

2. 단일 식 함수 (Expression Body)

함수의 몸체가 단 한 줄의 식으로 이루어져 있다면, 중괄호{}와 return을 생략하고 =를 사용하여 축약할 수 있다.

// 반환 타입까지 추론이 가능하여 생략할 수 있다.
fun sum(a: Int, b: Int) = a + b

3. Top-Level Function (최상위 함수)

코틀린은 클래스 밖에서도 함수를 선언할 수 있다. 이는 자바에서 유틸리티 성격의 메서드를 만들기 위해 무의미한 클래스(UtilClass)를 생성해야 했던 불편함을 해결해준다.

Kotlin: 클래스 없이 함수만 선언해도 어디서든 접근 가능.

Java 비유: 자바의 static 메서드와 유사하게 동작하지만, 훨씬 가독성이 좋고 코드가 깔끔해진다.

// Utils.kt 파일
fun log(message: String) {
    println("Log: $message")
}

class Service {
    fun run() {
        log("서비스 실행") // 클래스 외부 함수를 바로 사용
    }
}

4. 기본 파라미터와 오버로딩 (Default Parameters)

자바에서는 파라미터 개수가 다를 때마다 여러 개의 메서드를 오버로딩(Overload)해야 했다.
코틀린은 기본값(Default Value)을 설정하여 이를 함수 하나로 처리한다.

// 함수 하나로 3가지 케이스를 모두 대응 가능
fun sum(a: Int, b: Int, c: Int = 0) = a + b + c

fun main() {
    sum(1, 2)       // c는 기본값 0 사용 (결과: 3)
    sum(1, 2, 3)    // c에 3 대입 (결과: 6)
    
    // Named Arguments: 이름을 지정하면 순서와 상관없이 대입 가능
    sum(b = 10, a = 5) 
}

5. Unit 반환 (Java의 void)

반환값이 없는 함수의 경우 자바에서는 void를 사용하지만, 코틀린은 Unit이라는 객체를 반환한다. (생략 가능)

fun printSum(a: Int, b: Int): Unit { // : Unit은 생략 가능
    println(a + b)
}

요약하자면?

간결성: = 하나로 함수를 정의할 수 있는 단일 식 함수 지원.

유연성: 클래스에 얽매이지 않는 최상위 함수 제공.

효율성: 기본 파라미터를 통해 복잡한 오버로딩 없이 함수 하나로 다양한 케이스 대응.

profile
혼자 공부하는 블로그라 부족함이 많아요 https://www.notion.so/18067a27ac7e4f4790dde645fb3bf3d3?pvs=4

0개의 댓글