[Swift] In-Out Parameters

임주희·2022년 9월 22일
0

inout

inout 파라미터를 사용하면, 값타입의 매개변수도 참조타입 처럼 함수 내부에서 변경되고 다시 함수 바깥으로 전달돼 원본 값을 대체한다.

func swapInts(a: inout Int, b: inout Int){
	let tmp = a
	a = b
	b = tmp
}

var a = 5
var b = 10
swapInts(a: &a, b: &b)

print("a: \(a), b: \(b)") // "a: 10, b: 5"

참조 타입 : 인스턴스를 전달하는 경우 원본 인스턴스의 참조를 전달하게 된다.
이는 원본을 변경하는 경우, 복사본도 변경이 되며 반대로 복사본을 변경하더라도 원본도 변경이 된다.

값 타입 : 인스턴스를 전달하는 경우 원본의 복사본을 전달한다.
이는 한 인스턴스가 변경되더라도 다른 인스턴스에는 영향을 끼치지 않는다.
원본을 변경하던 복사본을 변경하던 서로에게 영향을 끼치지 않는다.

0개의 댓글