LoginSignup
1
3

More than 3 years have passed since last update.

[Swift]型のプロパティについて

Last updated at Posted at 2021-01-21

Swiftの型

Swiftの型は、クラス、構造体、列挙型として定義できます。
クラス、構造体、列挙型の3つには、メソッドやプロパティなどの共通の要素が用意されています。

宣言方法

struct 構造体名{
   構造体の定義
}
class クラス名{
   クラスの定義
}
enum 列挙型名{
   列挙型の定義
}

インスタン化の方法

型をインスタンス化するには、以下のようにします。
その時同時にイニシャライザが呼び出されます。イニシャライザは、インスタンス化する時に呼びだれるメソッドです。

型名()

プロパティ

型に紐づいた値のことをプロパティと呼びます。
より詳しくいうと、型の中で定義された変数をプロパティと言います。

定義方法

プロパティはvarやletで定義します。

struct 構造体名{
   //再代入可能なプロパティ
   var プロパティ名:プロパティの型=
   //再代入不可能なプロパティ
   let プロパティ名:プロパティの型=
}

プロパティの整合性を保つために、インスタンス化するまでに全てのプロパティの型を決める必要があるのでプロパティに初期値を代入する必要があります。
構造体の中でプロパティを初期化するか、イニシャライザで初期化するかいづれかの方法でプロパティに値を渡します。

プロパティの分類

プロパティには2種類あります。
1.インスタンスに紐づくプロパティ(インスタンスプロパティ)
2.型に紐づくプロパティ(スタティックプロパティ)

インスタンスプロパティ

struct Area{
    var tate=10
    var yoko=10
}
var A_1=Area()//インスタンス化
var A_2=Area()//インスタンス化
A_1.tate=3
A_2.tate=7
print(A_1.tate)//3
print(A_2.tate)//7

インスタンス化とは実物にするということです。
つまり、A_1とA_2という二つの物体を生成したことになります。
そのA_1とA_2の縦を変更したので、それぞれ3と7になります。
じゃあ、元々の縦を変更したい時にはどうすれば良いでしょうか。
その時は、staticキーワードを使います

スタティックプロパティ

struct Area{
    static var tate=10
    var yoko=10
}
var A_1=Area()
var A_2=Area()
Area.tate=3
A_1.tate=7//エラー
print(Area.tate)//3

A_1やA_2からtateにアクセスすることはできません。
そのかわり、型に直接3を代入することでtateを10から3に変更できます。

スタティックプロパティにはイニシャライザみたいな初期化するメソッドがないため宣言文のなかで初期化する必要があります。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3