inout parameter

쏘스야·2023년 4월 3일
0

ios 개발자의 첫걸음

목록 보기
21/61
/**
 inout parameter
 함수내의 파라미터는 기본적으로 값타입이고( 복사되어 전달) 임시상수이기 때문에 변경 불가 원칙
 */

var num1 = 123
var num2 = 456

func swap(a: Int, b: Int) {
//    var temp = a
//    a = b   // let 이라서 못바꿈
//    b = temp     // let 이라서 못바꿈
}

swap(a: num1, b: num2)

 

/**
 함수 내에서 변수를 직접 수정하도록 돕는 inout키워드 (참조로 전달) - 메모리 주소를 전달
 inout 키워드(선언시), & 사용(실행시)
 */

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

num1 = 123
num2 = 456

// 메모리 주소를 전달해야하기 때문에 var 타입을 argument에 전달해야함.
swapNumbers(a: &num1, b: &num2) // let 으로 전달 불가, 값 자체를 전달 불가, 가변 파라미터도 불가능

print(num1, num2)
profile
개발자

0개의 댓글