[swift] 변수와 상수의 파라미터 전달 방식

Swift에서 변수와 상수는 함수의 파라미터로 전달될 때 다른 방식으로 동작합니다. 이러한 차이점을 이해하는 것은 Swift 개발에 있어서 매우 중요합니다. 이 글에서는 Swift에서 변수와 상수를 파라미터로 전달할 때 어떻게 동작하는지 알아보겠습니다.

1. 변수의 파라미터 전달

변수를 함수의 파라미터로 전달할 때, Swift는 값을 복사하여 전달합니다. 이는 원본 변수와 함수 내부의 파라미터가 독립적으로 존재함을 의미합니다. 함수 내부에서 파라미터 값을 변경하더라도 원본 변수에는 영향을 주지 않습니다.

func updateValue(value: Int) {
    var tempValue = value
    tempValue += 10
    print("함수 내부: \(tempValue)")  // 출력: 함수 내부: 15
}

var myValue = 5
updateValue(value: myValue)
print("함수 외부: \(myValue)")  // 출력: 함수 외부: 5

위의 예시에서 myValue는 5로 초기화된 변수이고, updateValue 함수의 파라미터로 myValue를 전달하였습니다. 함수 내부에서 tempValue를 증가시킨 후 출력하였을 때 15가 나오지만, 함수 외부에서 myValue를 출력하였을 때는 5가 출력됩니다. 이는 변수의 값을 복사하여 전달했기 때문입니다.

2. 상수의 파라미터 전달

상수를 함수의 파라미터로 전달할 때도 변수와 마찬가지로 값이 복사됩니다. 하지만 상수의 경우 원본 값을 변경할 수 없으므로, 함수 내부에서 상수를 수정하려고 시도하면 컴파일 에러가 발생합니다.

func updateValue(value: Int) {
    let newValue = value + 10
    print("함수 내부: \(newValue)")  // 출력: 함수 내부: 15
}

let myValue = 5
updateValue(value: myValue)  // 컴파일 에러: 상수 'myValue'는 수정할 수 없습니다.

위의 예시에서 myValue는 5로 초기화된 상수입니다. updateValue 함수의 파라미터로 myValue를 전달하려고 하면 컴파일 에러가 발생합니다. 함수 내부에서 value에 10을 더한 값을 출력하기 위해 상수 newValue를 정의하였을 때는 정상적으로 동작합니다.

3. 결론

Swift에서 변수와 상수는 함수의 파라미터로 전달될 때 값이 복사되어 전달됩니다. 변수의 경우 함수 내부에서 값을 변경해도 원본 변수에는 영향을 주지 않습니다. 상수의 경우는 함수 내부에서 값을 수정할 수 없으므로, 수정을 시도하면 컴파일 에러가 발생합니다. 이를 기반으로 Swift 애플리케이션을 개발할 때 변수와 상수를 올바르게 다루는 것이 중요합니다.

참고: The Swift Programming Language - Functions