본문 바로가기
iOS/Swift 문법 심화 학습

inout

by 황민우 2022. 2. 9.

정의

- 함수의 파라미터는 상수이므로 함수 내부에서 파라미터의 값을 변경시킬 수 없습니다.

- 함수에서 파라미터의 값을 변경하거나 함수가 값을 반환한 뒤에도 매개변수의 변화를 유지시킬 때 사용합니다.

- 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

댓글