본문 바로가기
iOS

[iOS 앱 개발] Swift 함수에 참조 매개변수 전달

by Dokon Jang 2022. 10. 5.
반응형

Swift의 함수에 매개변수를 참조로 전달 할 수 있습니다.
즉 변수를 지정하고, 매개변수를 참조로 전달 후 함수내에서 매개변수의 값이 변경되면 함수 밖에서도 해당 변수의 값은 변경이 됩니다.

syntax는 inout으로 지정하며 함수 문법은 아래와 같습니다.

func [함수명]([파라미터 이름]: inout [데이터 타입]) -> [반환 타입] {
	return [반환 값]
}

 

일반함수

예로 두변의 값을 서로 교체하고 싶을 때 튜블을 리턴하는 함수를 생성하여 두 변수의 값을 교체하는 예제는 아래와 같습니다.
참조 매개변수로 전달하지 않고, 리턴 값으로 처리하는 코드입니다.

func swapInts(a : Int, b : Int) -> (a : Int, b : Int){
    return (b, a)
}

var x = 1
var y = 2

var xy = swapInts(a:x, b:y)

x = xy.a
y = xy.b

print("\(x) : \(y)")

 

참조 매개변수 전달

함수에 참조 매개변수로 전달하면 함수를 호출 후 해당 두변수의 값이 교체되는 코드는 아래와 같습니다.
참조 매개변수의 경우 "&"를 붙여서 함수에 전달해야 합니다.

func swapInts(a : inout Int, b : inout Int) {
    var temp = b
    b = a
    a = temp
}

var x = 1
var y = 2

swapInts(a : &x, b : &y)

print("\(x) : \(y)")

 

유형 매개변수 전달

추가로 교체하는 함수 swap에 여러 유형 매개변수로 전달하는 예는 아래와 같습니다.

func swap<T>(a : inout T, b : inout T) {
    var temp = b
    b = a
    a = temp
}

var x = 1
var y = 2

swap(a : &x, b : &y)

print("\(x) : \(y)")

var s1 = "A"
var s2 = "B"

swap(a :  &s1, b : &s2)

print("\(s1) : \(s2)")
반응형

댓글