본문 바로가기

SwiftUI

swift 인-아웃 파라미터 (In-Out Parameters)

swift 인 - 아웃 파라미터에 대해 알아보겠습니다.

 

예시 함수입니다.

 

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

일반적인 swift함수와 inout의 차이점은 함수에서 인자로 받은 값이 함수 내에서 변경을 해도

해당 함수를 사용한 공간에서도 인자값의 값이 변화한다는 것입니다. 

 

말로 하면 좀 이해가 어려우실거같아서 해당 함수를 예시로 보여드리겠습니다.

 

var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// Prints "someInt is now 107, and anotherInt is now 3"

해당 함수를 사용하게되면

 

someInt라는 값이 다른 별다른 값의 변화를 주지 않았어도 107이라는 인자 값으로 변환이 되어있는 것으로 확인할 수 있습니다.

 

그리고 인자 값을 사용할 때 & 이게 붙어 있는 것을 볼 수 있는데 C언어를 아시는 분이라면 포인터 개념이라고 하시면 이해하기 편하실 텐데

 

C언어를 모르시는 분들에게 간단하게 말씀드리면 본체를 넘겨준다?라고 이해하시면 편하실 것 같아요

 

var tempA : Int = 1
var tempB : Int = 2


func tempFunc(a : Int , b : Int){
	print(a)
    print(b)
}

tempFunc(a : tempA , b : tempB)

 

예시로 이런 로직이 있다고 치면

 

tempFunc이라는 함수에서 tempA , tempB라는 인자를 사용했지만 

 

함수 입장에서 봤을 때 tempA , tempB에 담겨있는 1,2라는 인자 값을 사용한 것이지 

 

tempA , tempB와는 무관하다 라고 생각하시면 됩니다

 

하지만  inout을 이용하게 된다면

 

인자 값이 아닌  tempA , tempB를 직접적으로 사용하는 것이 된다 

 

그래서 함수 내에서 tempA , tempB에 대한 값들이 변경이 돼도 실제로 적용이 된다 라고 보시면 되는데 

 

제가 적어놓고도 참... 이해가 안되게 적어놓았네요... ㅜㅜ

 

swiftUI 에서 사용하는 방식을 한번 보여드리겠습니다.

 

 

//
swiftUI 에서 사용하는 공간
//변수선언
@State var selectedNumber : Int = 0


//사용
testFunc.init().swapTwoInts(&selectedNumber)
                    



                 


//함수영역
public class testFunc {
    
    
    public var tempInt : Int = 2
    
    func swapTwoInts(_ a: inout Int) {
      
        a = 1
        self.tempInt = 2
    }
 

    
}

 

이렇게 사용을 하게 된다면  selectedNumber 가 1로 변화가되고 만약 거기에맞춰 UI를 제약을 걸어놨다면 UI 도 다시 그려지는것까지 확인 할 수 있었습니다.

 

하지만 self.$selectedNumber 로 인자를 줄려고하니 빨간줄이 뜨더라구요 그 부분은 좀더 공부를 해봐야 알 수 있을 것 같습니다 ㅜ

 

우선 제가 이해한 척도 내에서 최대한 설명을 해드렸어요 해당 함수에 대한 자세한 정보는 아래 링크에서 자세히 볼 수 있습니다.

 

제가 틀렸다면 언제든지 지적해주시는 댓글 달아주시면 더 공부하겠습니다 감사합니다!

 

https://jusung.gitbook.io/the-swift-language-guide/language-guide/06-functions

 

함수 (Functions)

 

jusung.gitbook.io