iOS
[Swift] inout parameter
Peppo
2021. 10. 26. 14:57
728x90
Generic을 공부하면서 아래와 같은 코드를 봤다.
func swap(_ a: inout Int, _ b: inout Int) {
// code
}
Inout ? 그것도 파라미터 자리에? 뭐지..
오늘은 Inout 파라미터에 대해 알아보자!!
Inout parameter
입출력 파라미터 라고도 불리며,
함수에서 직접 파라미터 값에 접근할 수 있도록 해주는 기능이다.
선언 방법
func 함수명(name: Inout Type)
이런식으로 적어준다.
func 함수명(_ 파라미터이름: inout 타입, _ b: inout Int) { }
그리고
인자값을 파라미터로 보내기 위해서는
인자값 앞에
'&'
를 붙여준다.
함수명(&변수, &변수)
일반 함수와 차이.
아래의 예시를 봅시다.
일반적인 함수
func swapTwoInts(_ a: Int, _ b: Int) {
let temporaryA = a
a = b // error >> Cannot assign to value: 'a' is a 'let constant
b = temporaryA // error >> Cannot assign to value: 'b' is a 'let constant
}
일반적으로 swift 함수는 모든 인자가 함수를 호출할 때 상수로 호출 되기 때문에 넘어온 값을 바꿀수 없다.
값을 변경(참조해서 전달) 하고 싶다면 !?
Inout 파라미터를 보자
Inout Parameter
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a // temporaryA = 3
a = b // a = 5
b = temporaryA // b = 3
}
var a = 3
var b = 5
swapTwoInts(&a, &b)
대충 짐작이 오시나요??
Inout parameter는 참조로 전달 할때 사용하기 때문에
값을 변경 할수 있습니다.
728x90