5. Function Syntax and Usage

함수 문법과 사용

1) 함수 선언 기본 문법

  • fun 키워드 사용

  • 이름: 타입 형태로 파라미터 지정

  • 반환 타입은 : Type (Unit일 경우 생략 가능)

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

👉 한 줄 함수는 더 간결하게:

fun max(a: Int, b: Int) = if (a > b) a else b

2) 반환 타입 생략 규칙

  • 식(Expression) 본문 (=) → 반환 타입 추론 가능

  • 블록 본문 ({ }) → Unit 아니면 반드시 타입 명시

fun add(a: Int, b: Int) = a + b   // Int 추론됨
fun log(msg: String) { println(msg) } // Unit, 타입 생략

3) 기본값 파라미터 (Default parameter)

  • 자바: 오버로딩으로 처리해야 함

  • 코틀린: 기본값 지정 가능


4) 이름 붙인 인자 (Named arguments)

  • 호출 시 파라미터 이름 지정 가능

  • 순서를 자유롭게 변경 가능

  • 빌더 패턴을 대체할 수 있음

👉 단, 자바 메소드 호출 시에는 named argument 불가


5) 가변 인자 (Vararg)

  • Java의 String... args와 동일

  • vararg 키워드 사용

👉 배열 전달 시 *array로 스프레드 필요.


6) 최상위 함수와 파일 구조

  • 코틀린은 **클래스 외부(파일 최상단)**에도 함수 정의 가능

  • 자바에서는 반드시 클래스 안에 메소드 정의해야 함

  • 코틀린의 최상위 함수는 JVM 바이트코드에서 static 메소드로 컴파일됨

👉 자바에서 호출 시: UtilsKt.now()


7) 실무 활용 패턴

A. API 유틸 함수

→ 확장 함수와 조합해 도메인에 맞는 DSL처럼 사용.

B. Android UI

→ 자바에서는 유틸 클래스 + static 메소드 필요.

C. Spring Boot + Kotlin

→ 기본값 파라미터로 오버로딩 제거 → 컨트롤러 코드 단순화.

Last updated