Kotlin ‐ 함수[Effective Kotlin Item 6] - thought-corner/Backend-PlayGround GitHub Wiki
Unit 반환 타입
- 타입을 명시하지 않으면 기본 결과 타입은
Unit이 되며, 기본 결괏값은 Unit 객체가 된다.
Unit은 아무것도 반환되지 않을 때 자리 표시자로 사용되는 아주 간단한 객체이다.
return이 없는 함수를 정의하면 결과 타입이 Unit이 된다.
vararg 매개변수
- vararg 매개변수는 여러 값의 묶음으로 실제로는 선언한 타입의 배열이 만들어진다.
- 그래서 for문을 사용해 순회를 할 수 있다.
함수 오버로딩(overloading)
- 코틀린에서는 매개변수 타입이 다르거나 매개변수 개수가 다르다면 같은 스코프에서라도 이름이 같은 함수를 정의할 수 있다.
- 이를 함수 오버로딩(function overloading)이라고 한다.
- 코틀린은 주어진 인수를 보고 어떤 함수를 호출할지 결정한다.
fun main() {
// 1. 기본 함수 호출
sayHello()
// 2. 매개변수와 반환 타입이 있는 함수 호출
val sumResult = addNumbers(10, 20)
println("10 + 20 = $sumResult")
// 3. 단일 표현식 함수 호출
val maxVal = findMax(5, 12)
println("더 큰 값: $maxVal")
// 4. 이름 있는 인자 활용 (가독성 향상)
printUserInfo(name = "Kotlin", age = 5, city = "Seoul")
// 5. 확장 함수 호출
val greeting = "Hello".addExclamation()
println(greeting) // Hello!
// 6. 고차 함수 및 람다식 활용 (컬렉션 처리)
val numbers = listOf(1, 2, 3, 4, 5)
val squared = numbers.map { it * it }
println("제곱 값 리스트: $squared")
}
// 1. 반환 값이 없는(Unit) 기본 함수 (Unit은 생략 가능)
fun sayHello(): Unit {
println("Hello, Kotlin!")
}
// 2. 매개변수와 반환 타입이 있는 함수
fun addNumbers(a: Int, b: Int): Int {
return a + b
}
// 3. 단일 표현식 함수 (Expression Body Syntax)
// 본문이 하나의 식으로 구성될 경우, 중괄호와 return을 생략할 수 있습니다.
fun findMax(a: Int, b: Int): Int = if (a >= b) a else b
// 4. 기본값(Default arguments)과 이름 있는 인자(Named arguments)를 사용한 함수
fun printUserInfo(name: String, age: Int, city: String = "Unknown") {
println("이름: $name, 나이: $age, 도시: $city")
}
// 5. 확장 함수 (Extension Function)
// 기존 String 클래스에 새로운 함수를 추가합니다.
fun String.addExclamation(): String {
return "$this!"
}
- 단일 표현식 함수와 같이 반환 타입을 생략할 수 있더라도 외부로 노출되는 Public API나 복잡한 로직을 가진 단일 표현식 함수는 반드시 반환 타입을 명시해야 한다.
- 추론된 타입이 개발자의 의도와 다를 수 있고, 코드를 읽는 사람의 가독성을 떨어뜨리기 때문이다.