7.2.4 매개변수의 수정

지금까지 매개변수라는 단어를 계속 사용했는데요, 사실 문제가 있습니다. 아래 예제를 보겠습니다.

// 입력받은 값을 +1 하여 리턴해주는 함수
func incrementBy(base: Int) -> Int {
    base += 1
    return base
}

이 함수를 작성하면 아래와 같은 에러가 뜰 것입니다.

Left side of mutating operator isn't mutable : 'base' is a 'let' constant

오류 메시지를 보면 base는 상수로 정의되었으므로 값을 변경할 수 없다는 뜻입니다. 따라서 매개변수라는 이름보다는 매개상수라는 표현이 맞습니다. 하지만 일반적으로 매개상수라는 표현은 사용되지 않고 영어로는 그냥 Parameter입니다. 즉 영어적 표현이로는 상수나 변수의 개념이 없습니다.(현업에서도 파라미터라고 많이 합니다...)

그렇다면 파라미터의 값을 변경하여 활용해야 할 경우에는 어떻게 할까요? 파라미터를 변수화시키면 됩니다. 예제를 살펴보겠습니다

func incrementBy(base: Int) -> Int {
    var base = base
    base += 1
    return base
}

매개변수의 이름과 동일한 변수 base를 정의하고 매개변수에 대입하면 그 아래에서 사용하는 base는 새로 정의된 변수 base를 가리키게 됩니다. 이 변수의 값을 변경하여 사용하면 아무 문제가 없습니다.

Last updated