LoginSignup
0
3

More than 1 year has passed since last update.

プロパティについてのまとめ(備忘録)

Last updated at Posted at 2021-06-09

プロパティについてのまとめ

・プロパティ : 型に紐づいた値のこと

・プロパティの分類
①var,let
②ストアドプロパティ,コンピューテッドプロパティ
③インスタンスプロパティ,スタティックプロパティ,クラスプロパティ

①var,let

var : 再代入可
let : 再代入不可

②ストアドプロパティ,コンピューテッドプロパティ

・ストアドプロパティ(値を保持するプロパティ。プロパティオブザーバをもつ。)

struct Bird {
    var status = "卵" {
        willSet {
            print("私は\(status)です。次は\(newValue)になります。")
        }
        didSet {
            print("私は\(status)になりました。前は\(oldValue)です。")
        }
    }

    func greet() {
        print("私は\(status)です。")
    }
}

var bird = Bird()
bird.greet() //私は卵です。

bird.status = "鳥"
bird.greet() // 私は卵です。次は鳥になります。私は鳥になりました。前は卵です。私は鳥です。

・コンピューテッドプロパティ(値を保持せずに算出するプロパティ)

struct Human {
    var gender = "男"
    var name : String {
        get {
            if gender == "男" {
                return "太郎"
            } else {
                return "花子"
            }
        }

        set {
            if newValue == "太郎" {
                gender = "男"
            } else {
                gender = "女"
            }
        }
    }

    func person() {
        print("私は\(name)です。性別は\(gender)です。")
    }
}

var human = Human()
human.person() // 私は太郎です。性別は男です。
human.gender = "女"
human.person() // 私は花子です。性別は女です。

③インスタンスプロパティ,スタティックプロパティ,クラスプロパティ

①インスタンスプロパティ(型のインスタンスに紐づくプロパティ)

struct Human {
    var gender = "男"
}

var human = Human()
print(human.name) //山田太郎

②スタティックプロパティ・クラスプロパティ(型そのものに紐づく)

・スタティックプロパティについて

 struct Animal1 {

//スタティックプロパティはストアドプロパティ・コンピューテッドプロパティとして利用できる。オーバーライドはできない。

        static var weight : Int {
            return 40
        }

        static var height: Int = 180
    }

    print(Animal1.weight) // 40
    print(Animal1.height) // 180



・クラスプロパティについて

//クラスプロパティはコンピューテッドプロパティとして利用しなければならない。オーバーライド可能。
class Animal2 {
    class var name : String {
        return "Dog"
    }
}

class Animal3: Animal2 {
    override class var name: String {
        return "Cat"
    }
}


print(Animal2.name) //Dog
print(Animal3.name) //Cat

参考

・Swift実践入門

0
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
0
3