Properties

13860 ワード

専攻は何ですか。


クラス、構造体、列挙に関連する値

プログラムの種類

  • ストレージ製品
  • 演算プログラム
  • 型番組
  • ストレージ構成


    Property 、
  • クラスまたは構造で変数または定数にのみ値を格納
  • 類は、構造体のみ
  • を用いる.
  • インスタンスを初期化するには、
  • インスタンスを作成する必要があります.
  • 構造は、内部構成
  • を変更するには、インスタンスをvarとして宣言する必要があります.
  • クラスでは、インスタンスをvar、letとして宣言して内部propertyを変更できます.
    // 구조체 
    struct Car {
        var model : String = "A6"
        let brand : String = "Audi"
    }
    var car = Car()
    car.model = "A7"
    car.brand = "BMW" // 에러
    // 클래스
    class Car {
        var model : String
        let brand : String
        
        init(){
            self.model = "A6"
            self.brand = "Audi"
        }
    }
    let car = Car(model: "A6", brand: "Audi")
    car.model // 상수로 인스턴스 생성했어도 내부 저장프로퍼티인 model은 값 변경이 가능하다.
    car.brand // 에러

    Lazy Stored Properties怠惰なストレージ構成

  • は、インスタンスの初期化時に初期化されるのではなく、プロパティへの最初のアクセス時に初期化されるため、定数は使用できません.
  • キーワードはvarです.
  • インスタンスを作成するときは初期化されないため、常にデフォルト値が必要です.
  • インスタンス名でプロパティにアクセスします.
  • struct Test {
        init(){
            print("생성 완료!")
        }
    }
    struct Car {
        var model : String = "A6"
        lazy var test: Test = Test()
    }
    var car = Car()
    car.test // 이때 생성
    
    lazyを使用しない場合は、インスタンスを作成しながらログを印刷します.lazyを使用すると、インスタンスの作成時に印刷ログは表示されず、呼び出し時に生成されます.

    えんざんプログラム


    Property は、
  • 値を保存せずに特定の計算値を返します.
  • は、他のプロパティ値をナビゲートおよび間接的に設定する方法
  • を提供する.
  • クラス、構造体、列挙型、提供
  • getブロックとsetブロックがあります.
  • get-プロパティが呼び出された場合は
  • です.
  • set-属性に新しい値を割り当てる場合は
  • struct Test {
        var width: Double
        var height: Double
        var result = 0.0
        
        var area: Double {
            get {
                return width * height
            }
            set {
               result += newValue
            }
        }
        
    }
    var test = Test(width: 1.5, height: 2.5)
    print("계산 결과 : \(test.area) ") // get블록 실행되서 1.5 * 2.5값 반환
    test.area = 10 // set블록 실행되서 result에 10 저장
    test.result // 10
    ほとんどは読む前に書いたものです.読み取り専用の場合は、以下のソースコードに示すように、記述を省略できます.
        var area: Double {
            return width * height
        }

    モニタ


    新しい値
  • が設定されるたびに、イベントを検出できる光ファイバが提供される.
  • willsetキーとdidsetキーを使用します.
  • willset-新しい値はlazyです.
  • didset-最初に格納された値はnewValueです.
  • は、通常、特定の属性の値が変更されたときにUIの状態を変更したり、特定の方法を呼び出したりするために使用される.
  • struct Car {
        var model: String
        var brand: String
        
        var state = "브랜드가 없습니다." {
            willSet {
                print("새로운 브랜드 \(newValue)로 변경되었습니다. ")
            }
            didSet {
                print("이전 브랜드는 \(oldValue) 입니다.")
            }
        }
    }
    var car = Car(model: "A6", brand: "Audi")
    car.state = "BMW"
    car.state = "Benz"

    を選択します。


    インスタントプログラムとは?
    構造体とクラスに属するストレージプログラムと演算プログラム.
    を選択します.
  • の静的キーワードを使用します.staticを使用するとタイプpropertyと理解できます
  • クラスキーワードを使用して、サブクラスでスーパークラスの実装を再定義できます.
  • 再定義(上書き)
  • 貯蔵型商品を貯蔵型商品と呼ぶ.
  • の演算プログラムを演算タイププログラムと呼ぶ.
  • が記憶され、演算プログラムとは異なるタイプ名でアクセスされる.
  • oldValue Type.stored
  • 構造体、クラス、列挙型も使用できます.
  • struct Type {
        static var stored: String = "저장 타입 프로퍼티"
        static var computed: String {
            return "연산 타입 프로퍼티"
        }
    }
    Type.stored // "저장 타입 프로퍼티"
    Type.computed // "연산 타입 프로퍼티"
    // class 키워드를 사용해서 오버라이드 
    class FirstClass {
        class var first: String {
            return "슈퍼클래스"
        }
    }
    
    class SecondClass : FirstClass {
        override static var first: String {
            return "서브클래스"
        }
    }