더북(TheBook)

vararg는 오버로딩 해소에도 영향을 미친다. 다른 요소가 모두 같다면 vararg 파라미터가 있는 함수는 동일한 타입의 파라미터 수가 고정돼 있는 함수보다 덜 구체적인 함수로 간주된다. 예를 들어 다음과 같이 인자가 세 개 있을 때 컴파일러는 2번 함수를 선택한다.

fun printSorted(vararg items: Int) { } // 1

fun printSorted(a: Int, b: Int, c: Int) { } // 2

fun main() {
  printSorted(1, 2, 3) // 2번 함수가 가변 인자 함수가 아니므로 2를 선택
  printSorted(1, 2)    // 적용할 수 있는 함수가 1번밖에 없으므로 1을 선택
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.