코틀린의 vararg는 무엇인가요?
_____A1: vararg는 함수의 매개변수에 가변 개수의 인자를 전달할 수 있도록 하는 키워드입니다. 즉, 호출 시 여러 개의 값을 하나의 파라미터로 받아 처리할 수 있게 해줍니다.
Q2: vararg 매개변수는 어떻게 선언하나요?
A2: 함수 선언 시 매개변수 타입 앞에 `vararg` 키워드를 붙입니다. 예를 들어, `fun printAll(vararg messages: String) { ... }`처럼 선언합니다.
Q3: vararg 매개변수는 몇 개까지 받을 수 있나요?
A3: 코틀린에서 특별한 제한은 없으며, 함수 호출 시 원하는 만큼 인자를 넘길 수 있습니다. 다만 JVM의 메모리 및 스택 제한에는 유의해야 합니다.
Q4: vararg 매개변수는 함수 내부에서 어떻게 사용되나요?
A4: vararg 매개변수는 함수 내부에서 배열(`Array`)로 처리됩니다. 위 예제의 `messages`는 `Array
Q5: 여러 개의 vararg 매개변수를 선언할 수 있나요?
A5: 아니요. 함수에 vararg 매개변수는 오직 하나만 선언할 수 있습니다.
A6: vararg 매개변수는 항상 함수 선언에서 마지막에 위치해야 합니다. 예:
`fun log(prefix: String, vararg messages: String) { ... }`
Q7: vararg에 배열을 전달하려면 어떻게 해야 하나요?
A7: 배열을 그대로 전달하면 해당 배열이 배열 안의 한 요소로 처리됩니다. 배열을 개별 요소로 넘기려면 스프레드 연산자(`*`)를 사용해야 합니다.
예: `val arr = arrayOf("a", "b")` → `printAll(*arr)`
Q8: vararg와 기본값(default value)을 같이 사용할 수 있나요?
A8: 아닙니다. vararg 매개변수는 기본값과 함께 사용할 수 없습니다.
Q9: vararg를 사용하면 장점은 무엇인가요?
A9: 함수 호출 시 가변 개수를 유연하게 받을 수 있어 코드가 간결해지고, 별도의 배열 생성 없이도 여러 값을 쉽게 처리할 수 있습니다.
Q10: vararg는 어느 상황에 적합한가요?
A10: 인자의 개수가 가변적일 때, 예를 들어 여러 메시지를 출력하거나 여러 값을 합산하는 함수 등을 만들 때 적합합니다.
이를 통해 함수 호출 시 인자의 개수를 유동적으로 조정할 수 있으며, 배열을 사용하지 않고도 여러 개의 인자를 간편하게 전달할 수 있습니다.
기본 개념 `vararg`는 함수의 매개변수 앞에 붙여 사용합니다.
이 매개변수는 여러 개의 인자를 받을 수 있으며, 함수 내부에서는 이 인자들을 배열로 다룰 수 있습니다.
예를 들어, 다음과 같은 함수를 정의할 수 있습니다: ```kotlin fun printNumbers(vararg numbers: Int) { for (number in numbers) { println(number) } } ``` 위의 `printNumbers` 함수는 `Int` 타입의 가변 인자를 받아서, 전달된 모든 숫자를 출력합니다.
이 함수를 호출할 때는 다음과 같이 다양한 개수의 인자를 전달할 수 있습니다: ```kotlin printNumbers(1, 2,
3) // 1 2 3 printNumbers(4,
5) // 4 5 printNumbers() // 아무것도 출력하지 않음 ``` 배열과의 관계 `vararg` 매개변수는 내부적으로 배열로 처리됩니다.
따라서, 함수 내부에서 `numbers`는 `IntArray`로 취급되며, 배열의 메서드나 속성을 사용할 수 있습니다.
만약 배열을 직접 전달하고 싶다면, 스프레드 연산자(`*`)를 사용하여 배열을 `vararg` 매개변수로 전달할 수 있습니다: ```kotlin val array = intArrayOf(6, 7,
8) printNumbers(*array) // 6 7 8 ``` 여러 개의 vararg 매개변수 Kotlin에서는 함수에 여러 개의 `vararg` 매개변수를 사용할 수 없습니다.
그러나, `vararg` 매개변수는 항상 마지막 매개변수로 위치해야 합니다.
예를 들어, 다음과 같은 정의는 유효하지 않습니다: ```kotlin fun example(vararg numbers: Int, message: String) { // 오류 발생 // ... } ``` 대신, `message` 매개변수를 `vararg` 매개변수 뒤에 두어야 합니다: ```kotlin fun example(message: String, vararg numbers: Int) { // ... } ``` 타입 제약 `vararg` 매개변수는 특정 타입으로 제한할 수 있으며, 기본 타입뿐만 아니라 사용자 정의 클래스나 인터페이스 등 다양한 타입을 사용할 수 있습니다.
예를 들어, 문자열을 가변 인자로 받는 함수를 정의할 수 있습니다: ```kotlin fun concatenate(vararg strings: String): String { return strings.joinToString(" ") } val result = concatenate("Hello", "World", "from", "Kotlin") println(result) // Hello World from Kotlin ``` 요약 Kotlin의 `vararg`는 함수가 가변적인 수의 인자를 받을 수 있도록 해주는 유용한 기능입니다.
이를 통해 코드의 가독성을 높이고, 배열을 직접 다루지 않고도 여러 개의 인자를 간편하게 처리할 수 있습니다.
다양한 타입의 인자를 받을 수 있으며, 배열을 스프레드 연산자를 통해 쉽게 전달할 수 있습니다.
이러한 특성 덕분에 Kotlin은 함수형 프로그래밍 스타일을 지원하며, 더 유연하고 직관적인 코드를 작성할 수 있게 됩니다.
작성자:
김재민 [비회원]
| 작성일자: 1년 전
2024-09-09 09:47:13
조회수: 171 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 171 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.