In-Out
- 함수 내에서 파라미터로 전달된 변수의 값을 수정할 수 있도록 하는 키워드
In-Out 파라미터
- Swift에서 함수의 파라미터는 기본적으로 값(Value)으로 복사되어 전달되어, 함수 내부의 파라미터에 대한 변경은 함수 외부에 영향을 주지 않는다.
inout
키워드를 통해 해당 변수의 참조(Reference)를 전달하여 함수 내에서 직접 변경할 수 있다.
var a = 2
var b = 3
func swapInt(_ a: inout Int, _ b: inout Int) {
let temp = a
a = b
b = temp
}
swapInt(&a, &b)
- 함수를 호출할 때 파라미터에
&
를 사용하여 변수의 주소값을 전달해야 한다.
In-Out 원리
inout
은 copy-in copy-out
의 줄임말로, 파라미터가 함수 호출 시 값의 복사본을 만들어 전달하고, 함수 내에서 변경된 값을 다시 복사하여 원본 변수에 할당하는 방식으로 작동한다.
- 함수가 호출되면 파라미터로 넘겨진 변수가 복사된다.
- 함수 내부에서 복사한 값을 수정한다.
- 함수 종료 시에 변화된 값을 원본 변수에 재할당한다.