インスタンス化するときに、定数で構造体を宣言すると、プロパティの変更ができないのはなぜなのでしょうか。
クラスのときは定数で宣言してもプロパティの変更ができたので混乱しています。
構造体は値型、クラスは参照型である。
なので構造体インスタンスのプロパティを変更した際(下記の例ではplayer1のhpに100を代入した際)
構造体インスタンス(Player1)を作り直す必要がある。
しかしインスタンスする際、インスタンス化定数で定義されていると作り直しができないのでvarで定義する必要がある。
と考えました。
しかし、なぜクラスの場合は定数で定義してもプロパティの変更ができるのかわかりませんでした。
定数だから変更はできないのではないでしょうか。
ご教授頂けば幸いです。宜しくおねがいします。
Swift
1struct Player { 2 var name: String 3 var hp: Int 4} 5let player1 = Player(name: "太郎", hp: 100) 6var player2 = Player(name: "二郎", hp: 60) 7 8player1.hp = 100 //エラー 9player2.hp = 100 //問題なし 10
Swift
1class Player { 2 var name: String 3 var hp: Int 4 5 init(name:String,hp:Int) { 6 self.name = name 7 self.hp = hp 8 } 9} 10let player1 = Player(name: "太郎", hp: 100) 11var player2 = Player(name: "二郎", hp: 60) 12 13player1.hp = 100 //なぜ定数なのにプロパティを変更できる?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/27 10:14