7.2.2 가변 인자

일반적으로 함수는 미리 정의된 형식과 개수에 맞는 인자값만 처리하지만, 때에 따라 가변적인 개수의 인자값을 입력받아야 할 때도 있습니다. 이를 위해서 함수를 정의할 때 매개변수명 다음에 '...' 연산자를 추가하면 됩니다

func 함수명(매개변수명: 매개변수 타입 ...)

이렇게 정의된 매개변수는 가변 인자로 인식되어 개수를 제한하지 않고 인자값을 입력받으며, 입력된 인자값을 배열로 처리합니다. 함수의 실행 블록 내에서 for~in 구문을 사용하면 입력된 모든 인자값을 순서대로 읽어들일 수 있습니다. 다음 예제를 보겠습니다.

func avg(score: Int...) -> Double {
    var total = 0 // 점수 합계
    for r in score { // 배열로 입력된 값들을 순회 탐색하면서 점수를 합산
        total += r
    }
    return (Double(total) / Double(score.count)) // 평균 구해서 반환
}

print(avg(score: 10,20,30,40)) // 결과 : 25.0

위의 평균을 구하는 예제처럼 가변 인자값은 입력 개수를 특정할 수 없는 형태의 매개변수에서 사용됩니다.

Last updated