1. 디폴트 인수 (Default Arguments)
- 다양한 입력 조합을 처리하는 방법
Java : 메서드 오버로딩
Kotlin : 파라미터 기본 값.
// 디폴트 인수를 적용한 설계
fun formatPersonDisplay(
name: String? = "Unknown",
surname: String? = "User",
age: Int? = 0
): String = "$name $surname ($age)"
2. 명명된 매개변수 (Named Parameters)
- 파라미터가 증가할수록 각 인자의 의미 파악 어려움.
Kotlin 에서는
- 호출에서 파라미터 이름을 명시 가능 →
가독성 및 안정성 향상.
// 순서를 바꾸어도 이름이 명시되어 있어 안전함
println(formatPersonDisplay(age = 25, name = "Rati", surname = "Go"))
- 인자 순서 오입력과 같은
Human error 감소.
- 다만,
Java 로 작성된 메서드의 경우, 해당 기능 사용 불가능할 수 있음.
3. 가변 인자 (vararg 매개변수)
- 함수가 임의의 개수의 인자를 받아야 할 때
vararg 사용
- 내부적으로는 배열로 처리
- but 호출부에서는 콤마로 구분된 나열형 데이터를 그대로 전달 가능
fun printAllNames(vararg names: String) {
for (name in names) {
print("$name ")
}
}
fun main() {
printAllNames("Rati", "John", "Doe") // 가변 인자 활용
val nameArray = arrayOf("Alice", "Bob")
// 스프레드 연산자(*)를 사용하여 배열의 요소를 펼쳐서 전달
printAllNames(*nameArray)
}
- 스프레드 연산자(
*)
- 이미 존재하는 배열을
vararg 파라미터로 넘길 때 사용
- 배열의 얕은 복사가 일어나며 각 요소가 개별 인자로 풀려서 전달
- 위치 제약
vararg 의 위치 관례 : 함수 파라미터 마지막에 위치
- 명명된 매개변수 덕분에 중간에 위치해도 호출이 가능하나, 권장되지는 않음.