제라스의 iOS 공부/Swift 문법

[Swift 문법] inout 메소드 매개변수

Xerath(제라스) 2023. 8. 17. 14:29
728x90
반응형

inout이란 키워드도 지난번 부스트캠프 다른 캠퍼 분 코드 컴파일링 시 본 적이 있다.

무슨 기능인지 그 당시엔 넘어갔지만 이번에 정리하고 가고자 한다.

생각보다 쉬운 개념이었다.

 

import UIKit

// 여기서는 name을 직접 수정하는 일이 없는데, 만약 수정하려고 하면 에러가 뜬다.
// 왜냐하면 매개변수는 기본적으로 let으로 설정되어 있기 때문이다.
func sayName(_ name: String){
    print("안녕?! 난 \(name) 라고 해")
}

// 이렇게 inout 키워드를 매개변수의 type 앞에 적어주면 해당 매개변수의 값을 메소드 내에서 변경이 가능하다.
func sayHi(_ name: inout String){
    name = "개발하는 " + name
    print("안녕?! 난 \(name) 라고 해")
}

// 하지만!!!!!!! 이렇게 하면 안된다. inout 변수에는 반드시 변수가 들어가져야 한다. 
sayName("제라스")

// inout 메소드에 들어가는 값은 변경 가능해야 한다.
// 그래서 메소드에 바로 값을 넣지 못하고 변수에 한번 값을 담은 뒤에 넣어야 한다.
var name = "제라스"

// 그리고 inout 매개변수라고 해당 변수 앞에 &을 달아준다.
sayHi(&name)

이렇게 inout 매개변수를 넣을 땐 &를 써줘야 하는 점, &뒤에는 변수에 값을 담아서 전송해줘야 한다는 점.

이 2가지가 inout 키워드를 사용 시 잘 알아두고 가야할 부분인 것 같다.

 

 

728x90
반응형