반응형
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)")
반응형
'iOS' 카테고리의 다른 글
[iOS 앱 개발] Swift 파일 쓰기 & 읽기 (0) | 2022.10.12 |
---|---|
[iOS 앱 개발] Swift 중첩 구조체 사용하기 (0) | 2022.10.07 |
[iOS 앱 개발] Swift 메소드/생성자 오버로딩(Overloading) (1) | 2022.09.23 |
[iOS 앱 개발] Swift 형 체크(is) (0) | 2022.09.22 |
[iOS 앱 개발] Swift 다형성(protocol, class) 예제 코드 (1) | 2022.09.20 |
댓글