[Swift] (기초) Sturct / 구조체

2021. 7. 16. 21:58🍏/Swift 기초 공부

구조체
구조체는 값 타입이며 다중상속 가능

import Swift

//MARK: - 정의
//struct 이름{
//
//}

struct Sample {
    var mutableProperty: Int = 100      // 가변 프로퍼티
    let immutableProperty: Int = 100    // 불편 프로퍼티
    
    static var typeProperty: Int = 100  // 타입 프로퍼티

// 인스턴스 메서드
    func instanceMethod() {
        print("instace method")
    }

    // 타입 메서드
    static func typeMethod(){
        print("type method")
    }
}

//MARK: 구조체 사용
// 가변 인스턴스
var mutable: Sample = Sample()

mutable.mutableProperty = 200
/* mutable.immutableProperty = 200 */ //가변 인스턴스 안의 immutableProperty 값 변경 불가능

// 불변 인스턴스
let immutable: Sample = Sample()

/* immutable.mutableProperty = 200
immutable.immutableProperty = 200 */ //불변 인스턴스 안의 프로퍼티가 가변이여도 값 변경 불가능

// 타입 프로퍼티 및 메서드

Sample.typeProperty = 300
Sample.typeMethod() // type method


/* mutable.typeProperty = 400
mutable.typeMethod() */ // 타입프로퍼티 & 타입 메서드 사용 불가능

//MARK: - 학생 구조체

struct Student {
    var name: String = "unknown"
    var `class`: String = "Swift"

    static func selfIntroduce(){
        print("학생 타입 입니다.")
    }
    
    func selfIntroduce(){
        print("저는 \(self.class)반 \(name)입니다 ")
    }
}

Student.selfIntroduce() // 학생 타입입니다.

var chan: Student = Student()
chan.name = "chan"
chan.class = "스위프트"
chan.selfIntroduce()    //저는 스위프트반 찬입니다.

let kanna: Student = Student()
// 불변 인스턴스이므로 프로퍼티 값 변경 불가
// 컴파일 오류 발생
//kanna.name = "kanna"
kanna.selfIntroduce() //저는 swift반 unknown입니다