정의
- 함수의 파라미터는 상수이므로 함수 내부에서 파라미터의 값을 변경시킬 수 없습니다.
- 함수에서 파라미터의 값을 변경하거나 함수가 값을 반환한 뒤에도 매개변수의 변화를 유지시킬 때 사용합니다.
- inout 파라미터는 변수만을 취급하며, 함수의 인자로 전달될 때 반드시 &를 사용해야 합니다.
예제
- 받은 매개변수를 이름으로 출력시키는 sayName함수와 sayIntroduce함수가 있습니다.
- 코드를 실행해보면, sayIntroduce 함수의 파라미터를 상수로 사용하지 않았기 때문에 오류가 발생합니다.
func sayName(_ name: String){
print("안녕! 나는 \(name)이라고 해")
}
func sayIntroduce(_ name: String){
name = "Swift 공부하는" + name
print("안녕! 나는 \(name)이라고 해")
}
sayName("SeaGreen")
sayIntroduce("SeaGreen")
- 위의 예제를 해결하기 위해선, sayIntroduce의 파라미터 타입 전에 inout키워드를 추가해주면 됩니다.
- inout파라미터는 변수만을 취급합니다.
- 또한 inout을 통해 함수의 인자로 전달할 때 &를 사용하여 해당 값이 함수 내부에서 변경될 것을 나타내야 합니다.
func sayName(_ name: String){
print("안녕! 나는 \(name)이라고 해")
}
func sayIntroduce(_ name: inout String){
name = "Swift 공부하는" + name
print("안녕! 나는 \(name)이라고 해")
}
sayName("SeaGreen")
var name = "SeaGreen"
sayIntroduce(&name)
실행결과
// 안녕! 나는 SeaGreen이라고 해
// 안녕! 나는 Swift 공부하는SeaGreen이라고 해
내용 출처
https://hyunsikwon.github.io/swift/Swift-Inout-01/
https://www.youtube.com/watch?v=ge5BLzaTo8g&list=PLgOlaPUIbynoqbQw_erl3L2w7vfOTCtFD&index=16
'iOS > Swift 문법 심화 학습' 카테고리의 다른 글
프로퍼티 [ Properties ] (0) | 2022.02.14 |
---|---|
옵셔널 체이닝 [ Optional Chaining ] (0) | 2022.02.10 |
mutating (0) | 2022.02.09 |
제네릭 [ Generic ] (0) | 2022.02.08 |
고차함수 [ map, filter, reduce ] (0) | 2022.02.07 |
댓글