[swift] Swift 구조체의 멤버 변수와 멤버 함수에 대해 설명해주세요.

Swift에서 구조체는 값을 전달할 때 복사본을 생성하고 참조 형식이 아닌 값을 전달한다는 점을 제외하면 클래스와 유사한 기능을 제공합니다. 구조체는 멤버 변수와 멤버 함수를 가질 수 있으며, 다음과 같이 정의됩니다.

멤버 변수 (Stored Properties)

구조체 내부에 변수를 선언하면 멤버 변수가 됩니다. 멤버 변수는 상수로 선언될 수도 있으며, 초기화되지 않은 변수는 옵셔널 변수로 간주됩니다.

struct MyStruct {
    var x: Int  // 가변 멤버 변수
    let y: String  // 불변 멤버 변수
}

위의 예제에서 x는 가변(mutating) 멤버 변수이며, 구조체의 인스턴스가 변경될 때 값이 업데이트될 수 있습니다. y는 불변 멤버 변수이므로 인스턴스가 생성된 후에는 값이 변경되지 않습니다.

멤버 함수 (Instance Methods)

구조체 내부에 함수를 선언하여 멤버 함수를 정의할 수 있습니다. 구조체의 내부 상태를 변경해야 하는 경우에는 mutating 키워드를 사용해야 합니다.

struct MyStruct {
    var x: Int
    
    mutating func updateValue(newValue: Int) {
        self.x = newValue
    }
}

위의 예제에서 updateValue 함수는 mutating 키워드를 사용하여 self의 값을 업데이트할 수 있도록 허용합니다.

Swift 구조체는 멤버 변수와 멤버 함수를 통해 유연한 모델링을 제공하며, 값 형식의 특성으로 인해 쓰레드 안전성과 코드 예측성을 강화하는 데 도움이 됩니다.

더 자세한 내용은 Swift 공식 문서를 참고하십시오.