swift & iOS/swift

[swift] 함수의 inout 파라미터

whale3 2022. 1. 27. 16:20

출처: https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID173

 

Functions — The Swift Programming Language (Swift 5.5)

Functions Functions are self-contained chunks of code that perform a specific task. You give a function a name that identifies what it does, and this name is used to “call” the function to perform its task when needed. Swift’s unified function syntax

docs.swift.org

 

 

함수의 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
반응형