[Swift]構造、クラス、列挙


ガイドルート-iOSプログラミングのSwiftベース


スラリー構造体とは?

  • SWIFTのほとんどのタイプは構造体からなる.
  • 構造体は値タイプです.
  • タイプ名は、大文字のキャメルキャビネットによって定義されます.
  • struct Sample {
        // 가변 프로퍼티(값 변경 가능)
        var mutableProperty: Int = 100 
        
        // 불변 프로퍼티(값 변경 불가능)
        let immutableProperty: Int = 100 
        
        // 타입 프로퍼티(static 키워드 사용 : 타입 자체가 사용하는 프로퍼티)
        static var typeProperty: Int = 100 
        
        // 인스턴스 메서드(인스턴스가 사용하는 메서드)
        func instanceMethod() {
            print("instance method")
        }
        
        // 타입 메서드(static 키워드 사용 : 타입 자체가 사용하는 메서드)
        static func typeMethod() {
            print("type method")
        }
    }

    エンタープライズクラスとは?

  • クラスは「参照」(reference)タイプです.
  • タイプ名は、大文字のキャメルキャビネットによって定義されます.
  • SWIFTのクラスは多重継承性を持たない.
  • class Sample {
        // 가변 프로퍼티
        var mutableProperty: Int = 100 
    
        // 불변 프로퍼티
        let immutableProperty: Int = 100 
        
        // 타입 프로퍼티
        static var typeProperty: Int = 100 
        
        // 인스턴스 메서드
        func instanceMethod() {
            print("instance method")
        }
        
    
        // 타입 메서드
        // 상속시 재정의 불가 타입 메서드 - static
        static func typeMethod() {
            print("type method - static")
        }
        
        // 상속시 재정의 가능 타입 메서드 - class
        class func classMethod() {
            print("type method - class")
        }
    }

    列挙型とは何ですか。

  • は、1つの場所で複数の類似タイプの値を集約して定義される.例えば、曜日、月、季節など
  • enum自体は、大文字のカードキャビネットを使用して名前を定義するデータ型です.
  • 各ケースは、小文字のキャメルケースとして定義されます.各ケース自体は固有の値です.(ケースごとに整数値を自動的に割り当てない)各ケースは、1行で個別に定義したり、1行で複数を定義したりできます.
    enum Weekday {
        case mon
        case tue
        case wed
        case thu, fri, sat, sun
    }
    
    // 열거형 타입과 케이스를 모두 사용하여도 됩니다
    var day: Weekday = Weekday.mon
    
    // 타입이 명확하다면 .케이스 처럼 표현해도 무방합니다
    day = .tue
    
    print(day) // tue
    
    // switch의 비교값에 열거형 타입이 위치할 때
    // 모든 열거형 케이스를 포함한다면
    // default를 작성할 필요가 없습니다
    switch day {
    case .mon, .tue, .wed, .thu:
        print("평일입니다")
    case Weekday.fri:
        print("불금 파티!!")
    case .sat, .sun:
        print("신나는 주말!!")
    }

    rawValue(元の値)


    整数値は
  • C言語のenumと同じであってもよい.
  • rawValueは、caseごとに異なる値を指定する必要があります.
  • は、1の増分値を自動的に割り当てます.
  • rawValueを必ずしも携帯しない場合は、作成する必要はありません.
  • 整数タイプに加えて、Hasableプロトコルに準拠するすべてのタイプを元の値のタイプとして指定することもできます.
  • 元の値で初期化

  • rawValueで初期化できます.
  • rawValueはcaseに不適切である可能性があるため、rawValueによって初期化されたインスタンスは時代遅れである.
  • 方法

  • SWIFT列挙にメソッドを追加することもできます.
  • コンパクトクラスvs構造体/列挙型

  • クラスは参照タイプであり、列挙タイプと構造タイプが値タイプである最大の違いは
  • である.
  • クラスは継承できますが、列挙型および構造体は継承できません.
  • 値タイプと参照タイプ

  • 値タイプ:データの転送時に値をコピーして転送します.
  • 参照タイプ:データの転送時に値を転送するメモリの場所.
  • 値タイプを使用する場合:

  • いくつかの相関値を集約してデータ型として表すには、
  • が必要です.
  • 参照(他のオブジェクトや関数など)ではなく値をコピー(コピー)する場合、
  • 自分を継承する必要はありません.または、他のタイプの
  • を継承する必要はありません.