[Swift] inout 파라미터

팔랑이·2024년 6월 13일
0

iOS/Swift

목록 보기
29/71
post-thumbnail

제네릭 공부할 때 처음 본 inout

예시:

func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

저기서 inout이 뭔가 했더니, 원래 let으로 설정되는 함수의 파라미터를 변수처럼 만들어주는 키워드였다.

스위프트에서는 함수 파라미터가 기본적으로 let으로 선언돼서 함수 내부에서 변경할 수 없다. 그래서 초반에 프로그래머스에서 오류 겁나 냄...
하지만!!!!! inout 키워드를 사용하면 함수의 파라미터를 마치 변수처럼 사용해서 값을 변경할 수 있다. 이렇게 하면 함수 내부에서 파라미터의 값을 직접 수정하고, 그 수정된 값이 함수 호출이 끝난 후에도 유지된다.

inout 파라미터 사용 예제

inout 키워드를 사용하면 파라미터를 변수처럼 사용해서 값을 변경할 수 있어.

func modifiableParameter(_ number: inout Int) {
    number += 1 // number 값을 변경 가능
}

var value = 5
modifiableParameter(&value)
print(value) // 6

위 예제에서 modifiableParameter 함수는 inout 파라미터를 사용해서 number의 값을 변경할 수 있다.

❗️ 또한, inout 파라미터를 사용한 함수는 호출될 때 &를 사용해서 변수의 참조를 전달해야 한다

modifiableParameter(value)

이렇게만 작성하면 컴파일 오류가 납니다.

profile
정체되지 않는 성장

0개의 댓글