Swift 입문 | 함수 | INOUT 인수


Swift의 함수에서 다른 하나 더 알아야 하는 것이 “INOUT"인수이다. 이는 전달된 인수 자체를 다시 작성할 수 있는 특수 인수이다. 이것은 인수 전에 “inout"을 붙여야 한다.

(inout 인수명:유형)

이 INOUT 인수에 지정된 변수는 변수명 앞에 “&“를 붙인다. 또한, 당연하지만 리터럴 인수에 지정할 수 없다 (왜냐하면 리터럴은 고쳐 쓸 수 없기 때문이다).

아래에 INOUT 인수에 대한 예제를 보도록 하자.

func tax(inout price:Int, rate:Double = 0.08) -> Void {
    price = Int(Double(price) * (1.0 + rate))
}

var num = 12300
tax(&num)

여기에서는 함수의 정의를 다음과 같이 작성하고 있다.

tax(inout price:Int, rate:Double = 0.08)

첫 번째 price가 INOUT 인수로 되어 있다. 반환 값은 Void이다. 이 함수의 호출을 보면 이렇게 되어 있다.

tax(&num)

이것으로 변수 num의 값이 직접적으로 변경된다. 값을 돌려주는 것이 함수의 기본이지만, 이렇게 직접 고쳐 쓰는 것이 가능하게 된 것으로, 값 자체를 변경하는 변수를 사용할 수 있다.