제네릭을 공부하다가 예제에 매개변수에 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 |