コンストラクタ(一)


コンストラクタのキーワードはinitです.今日は、クラスまたは構造体を作成するときに、すべてのストレージ属性に初期値を設定する必要があります.定義時にデフォルト値を直接設定できます.またはコンストラクタで値を設定します.
インスタンスストレージの初期化は、大きく分けて次のようになります.
  • インスタンスストレージ属性を定義すると、初期値が明示的に指定されます.
  • インスタンスストレージ属性のタイプはオプションであり、初期値
  • としてnilがデフォルトで割り当てる.
  • は、インスタンス記憶属性に初期値
  • を割り当てるコンストラクタを提供する.
    明らかに、今日私たちが勉強しているのは第三者です.

    パラメトリックコンストラクタなし


    コンストラクタの後ろの括弧にはパラメータがありません
      struct  Week
      {
     var desc:String=""
     var info:String=""
        init()
        {
        self.desc=" "
         self.info=" "
        }
        }
        var week2=Week()
        print(week2.desc)
        print(week2.info)
    

    パラメトリックコンストラクタ

      struct  Week
      {
     var desc:String=""
     var info:String=""
      init(desc:String,info:String)
        {
        self.desc=desc
            self.info=info
        } 
         }
    var week=Week(desc: " ", info:" , ")
        print(week.desc)
        print(week.info)
    

    パラメータ付きキャンセル外部パラメータ名なし


    パラメータの前に_を付けるを選択します.
      struct  Week
      {
         var desc:String=""
         var info:String=""
        init()
        {
        self.desc=" "
         self.info=" "
        }
        init(_ desc:String, _ info:String)
        {
        self.desc=desc
        self.info=info
        }    
        }
    var week1=Week(" "," , ")
        print(week1.desc)
        print(week1.info)  
    

    コンストラクタリロード


    3つのコンストラクタを定義しました.このような1つのコンストラクタまたはクラスに複数のコンストラクタが含まれている場合、コンストラクタの再負荷を構成します.コンストラクタのリロードを区別する条件は、複数のコンストラクタのパラメータリストまたは外部パラメータ名が異なる必要があります.上の3つのコードを1つに統合すると、コンストラクタの再ロードが構成されます.以下のようにします.
        struct  Week
      {
     var desc:String=""
     var info:String=""
        init()
      {
        self.desc=" "
        self.info=" "
       }
       init(desc:String,info:String)
        {
        self.desc=desc
        self.info=info
        }
      init(_ desc:String, _ info:String)
       {
        self.desc=desc
        self.info=info
        }
      }