출처: https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID173
함수의 parameter는 기본적으로 상수이기 때문에 함수 내부에서 parameter를 수정하려고 하면 아래처럼 컴파일 에러가 난다
함수 내부에서 parameter를 수정하고 싶다면 inout 키워드를 사용해야 한다. inout parameter에 들어온 값은 함수 내부에서 수정된 후에 원래의 값을 업데이트 한다. 이렇게 값이 바뀌게 되기 때문에 argument로 let 말고 var를 전달 한다.
그리고 inout parameter가 될 argument 앞에는 각각 &를 붙여야 한다.
// 출처: https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID173
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var first = 10
var second = 22
print(first, second) // 10 22
swapTwoInts(&first, &second)
print(first, second) // 22 10
반응형
'swift & iOS > swift' 카테고리의 다른 글
[swift] 옵셔널 체이닝 optional chaining (0) | 2022.01.28 |
---|---|
[swift] 열거형 (enum with associated value)과 옵셔널 optional (0) | 2022.01.27 |
[swift] 함수에서 여러 개의 값을 반환하기 (튜플) (0) | 2022.01.27 |
[swift] 문자열 끝에서 자르기 dropLast() (0) | 2022.01.23 |
[swift] 후행 클로저 (trailing closure) (0) | 2022.01.23 |