코틀린에서는 함수를 호출할 때 위치 기반 인자(Positional Argument)와 이름 붙은 인자(Named Argument)를 모두 사용할 수 있습니다. 이는 함수 호출 시 매개변수에 값을 전달하는 방식을 다양하게 할 수 있게 해주는 기능입니다.
1. 위치 기반 인자 (Positional Argument)
가장 일반적인 방식으로, 함수의 매개변수 순서대로 값을 전달하는 방식입니다.
fun printDetails(name: String, age: Int, city: String) {
println("Name: $name, Age: $age, City: $city")
}
// 위치 기반 인자 사용
printDetails("John", 25, "New York")
2. 이름 붙은 인자 (Named Argument)
매개변수의 이름을 명시하여 값을 전달하는 방식입니다.
// 이름 붙은 인자 사용
printDetails(name = "Jane", age = 30, city = "London")
이름 붙은 인자를 사용하면 매개변수의 순서에 상관없이 값을 전달할 수 있으며, 가독성을 높일 수 있습니다. 또한 일부 매개변수만 선택적으로 사용할 때 특히 유용합니다.
3. 혼용 사용
이름 붙은 인자와 위치 기반 인자를 혼용하여 사용할 수 있습니다.
printDetails("Alice", city = "Paris", age = 28)
이름 붙은 인자는 해당 매개변수의 이름을 명시하므로 함수 정의와는 상관없이 순서를 바꿔서 사용할 수 있습니다.
4. 디폴트 값이 있는 매개변수와 혼용
디폴트 값이 있는 매개변수와 함께 사용할 때 위치 기반 인자와 이름 붙은 인자를 혼용하여 활용할 수 있습니다.
fun printDetailsWithDefault(name: String, age: Int = 30, city: String = "Unknown") {
println("Name: $name, Age: $age, City: $city")
}
// 혼용하여 사용
printDetailsWithDefault("Bob", city = "Tokyo")
5. Varargs와 이름 붙은 인자
가변 인자(varargs)와 함께 이름 붙은 인자를 사용할 수 있습니다.
fun printNumbers(vararg numbers: Int, message: String = "Numbers:") {
println("$message ${numbers.joinToString(", ")}")
}
// 이름 붙은 인자를 사용하여 메시지를 지정
printNumbers(1, 2, 3, message = "List of numbers:")
이렇게 이름 붙은 인자는 함수 호출 시의 가독성을 높여주고, 특히 매개변수가 많거나 일부 매개변수만 사용하는 경우에 유용하게 사용됩니다.
With ChatGPT