構造体のプロパティには2種類ある
- インスタンスプロパティ(インスタンスに紐づくプロパティ)
- スタティックプロパティ(型に紐づくプロパティ)
スタティックプロパティ
構造体で扱ったプロパティはインスタンスに紐づくインスタンスプロパティでした。
スタティックプロパティは型に紐づくプロパティのことでタイププロパティとも呼ばれます。
スタティックプロパティ
static let プロパティ名 = 値
static var プロパティ名 = 値
アクセス方法
型名.プロパティ名
型名(構造体名)でアクセスとは?
構造体の利用方法のひとつとして「構造体名を型名にできる」というものがあります。
struct Human{
var name:String
var age:Int
}
var h = Human(name:"Tom",age:23)
print(type(of:h))
構造体名はひとつの型
Humanという構造体を定義しました。
print(type(of:h))でh(構造体Human)の型名を調べた場合、コンソールには「Human」と表示されます。
これは構造体HumanがHuman型である(ひとつの型として機能している)ということを指しています。
構造体名で型名を指定することもできる
var a:Int
var a:Human
注目
ここではスタティックプロパティにアクセスするには型名.プロパティ名になり、型名とは構造体名のこと!
ということだけ抑えておきます。
スタティックプロパティとインスタンスプロパティを両方使った例
struct Prop{
static let sProperty = "スタティックプロパティ"
let iProperty = "インスタンスプロパティ"
}
Prop.sProperty
Prop().iProperty
- 構造体Propを定義します。
- static let sPropertyでスタティックプロパティを宣言しています。
- let iPropertyでインスタンスプロパティを宣言しています。
- スタティックプロパティのアクセス方法は型名.プロパティ名のProp.sPropertyです。
- インスタンスプロパティのアクセス方法はインスタンス.プロパティ名のProp().iPropertyです。