본문 바로가기
Apple/Apple_Swift

inout이란?

by LeviiOS 2024. 8. 9.
반응형

inout란?

 

inout은 함수에서 파라미터를 변경할 수 있도록 허용하는 키워드입니다. 함수 내에서 파라미터 값을 수정하면, 함수 호출 시 전달된 실제 변수의 값이 변경됩니다.

 

inout 사용 예시

 

다음은 inout 키워드를 사용하는 간단한 예시입니다.

func increment(number: inout Int) {
    number += 1
}

var myNumber = 10
increment(number: &myNumber)
print("Incremented Number: \(myNumber)") // 11

 

inout을 사용한 스왑 함수

 

inout을 사용하면 간단한 스왑 함수를 작성할 수 있습니다.

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

var firstValue = 5
var secondValue = 10
swap(&firstValue, &secondValue)
print("First Value: \(firstValue), Second Value: \(secondValue)") // 10, 5

 

inout의 주의사항

 

inout 파라미터는 함수 호출 시 변수에 직접 접근하기 때문에, 상수나 리터럴 값을 전달할 수 없습니다. 또한, inout 파라미터는 함수가 종료된 후에도 변경된 값이 유지되므로 주의해서 사용해야 합니다.

// 잘못된 사용 예시
// increment(number: 10) // 컴파일 에러: 상수는 inout 파라미터로 전달할 수 없음
반응형