관리 메뉴

사과하는 제라스

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

제라스의 Swift 공부/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
    반응형