Swift プロパティ


プロパティ

  • 型に紐付いた値
  • 型が表すものの属性の表現などに使用される
struct 構造名 {
var プロパティ名: プロパティの型 =  // 再生可能なプロパティ
let プロパティ名: プロパティの型 =  // 再生不可能なプロパティ
}

プロパティは型のインスタンスに紐付くインスタンスプロパティと、その型そのものに紐付くスタティックプロパティに分類される。

インスタンスプロパティ

  • 型のインスタンスに紐付くプロパティ
  • インスタンスごとに異なる値を持たせることができる
  • varやletで定義したプロパティは、デフォルトではインスタンスプロパティとなる
struct MyNameIs {
    var name = "TERADA"
}

let myNameIsEng = MyNameIs()
var myNameIsJpn = MyNameIs()
myNameIsJpn.name = "寺田"

let englishName = myNameIsEng.name //TERADA
let japaneseName = myNameIsJpn.name //寺田

スタティックプロパティ

  • 型自身に紐付くプロパティ
  • インスタンス間で共通する値の保持などに使用

宣言方法
プロパティ宣言の先頭にstaticを追加。スタティックプロパティにアクセスするには型の前に.とスタティック名を付けて型名.スタティックプロパティ名のように書く

struct Greeting {
    static let signature = "Sent from iPhone"

    var to = "Terada"
    var body = "Hello!"
}

func print(greeting: Greeting){
    print("to: \(greeting.to)")
    print("body: \(greeting.body)")
    print("signature: \(Greeting.signature)")
}

let greeting1 = Greeting()
var greeting2 = Greeting()
greeting2.to = "Kunio"
greeting2.body = "Hi!"

print(greeting: greeting1)
print("---")
print(greeting: greeting2)

to: Terada
body: Hello!
signature: Sent from iPhone
---
to: Kunio
body: Hi!
signature: Sent from iPhone