Swift

Swift) inout 매개변수

나태한개발 2024. 6. 6. 18:30

제네릭을 공부하다가 예제에 매개변수에 inout 이라고 붙어 있길래 

뭐지 하고 검색해보았다.

생김새는 간단한거 같은데 막상 사용법을 보니 조금 헷갈리는 부분이 있어서 정리해본다.

 

사용법

func swapValues(_ a: inout Int, _ b: inout Int) {
    let temporary = a
    a = b
    b = temporary
}

var num5 = 5
var num10 = 10

print("다섯: \(num5), 열: \(num10)") //다섯: 5, 열: 10

swapValues(&num5, &num10) //변수를 받고 그 변수를 바로 수정해버림

print("다섯: \(num5), 열: \(num10)") //다섯: 10, 열: 5

메서드 매개변수 앞에 inout을 붙여주면 된다.

함수를 호출할때는 매개변수 앞에 &를 붙인다.

 

func swapValues(_ a: inout Int, _ b: inout Int) {
    let temporary = a
    a = b
    b = temporary
}

//let으로 선언
let num5 = 5
let num10 = 10

print("다섯: \(num5), 열: \(num10)") //다섯: 5, 열: 10

swapValues(&num5, &num10) //바로 오류남 그냥

print("다섯: \(num5), 열: \(num10)") //다섯: 10, 열: 5

let으로 선언한 상수는 적용이 안되는거 같다.

 

뭔가 눈으로 봤을때는 헷갈렸는데 막상 정리해 보니 그렇게 어렵진 않은거 같다.

'Swift' 카테고리의 다른 글

Swift) 단일 책임의 원칙  (0) 2024.06.07
Swift) Generic 제네릭  (0) 2024.06.05
Swift) 상속  (0) 2024.06.04
Swift) Struct 구조체  (0) 2024.06.02
Swift) Protocol 프로토콜  (0) 2024.06.01