📖 In-out Parameters
📌 In-out Parameter (인-아웃 파라미터)
swift 내 함수에서의 파라미터는 상수이므로, 함수 내에서 파라미터의 값을 변경하는 것은 불가능합니다. (실수로라도 파라미터의 값을 변경시킬 수 없습니다.) 하지만 In-out 파라미터 를 활용하면 함수 안에서 파라미터의 값을 변경하고, 함수 호출이 종료된 이후에도 변경된 값이 지속되게 됩니다.
inout 매개변수는 다음의 과정을 거치게 됩니다.
- 함수가 호출되면, 매개변수로 넘겨진 변수가 복사된다.
- 함수 몸체에서, 복사한 값을 수정한다.
- 함수가 반환될 때, 변화된 값을 원본 변수에 재할당한다.
이 동작을 copy-in copy-out 혹은 다른언어에서의 call by value result 라고 불리게 됩니다.
가장 일반적인 함수입니다.
func sayName(_ Name: String) {
print("안녕! 나는 \(Name)라고 해.")
}
sayName("코더")
>>> 안녕! 나는 코더라고 해.
Cannot assign to value: 'Name' is a 'let' constant
값을 임의로 변경하려 할 때, 파라미터가 상수이므로 변경할 수 없다는 경고창이 떴습니다.
💬 이를 해결하기 위해 inout 을 자료형 앞에 적으면 값을 변경할 수 있습니다.
func sayHI2(_ Name: inout String) {
Name = "개발하는 " + Name
print("안녕! 나는 \(Name)라고 해.")
}
💬 값을 집어넣을 때는 파라미터 앞에 & 를 붙여야 합니다.
sayHI2(&name)
>>> 안녕! 나는 개발하는 후니라고 해.
'IOS - Swift' 카테고리의 다른 글
Mac 에러해결기: (xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH) (0) | 2022.09.25 |
---|---|
Mac 에러 해결기 (xcrun: error: invalid active developer path) (0) | 2022.09.25 |
Swift 기본문법 - Dictionary (0) | 2022.09.15 |
Swift 기본문법 - 상속 (0) | 2022.09.15 |
Swift 기초문법 - Closure (0) | 2022.09.14 |