Avatar
omochimetaru 2/27/2018 3:23 AM
はい struct は今と同じ class には 新たに mutating func と update func を導入 class は今まで func で stored property が変更可能だったがこれを禁止 stored property の変更は mutating func の中でのみ可能に変更 update func では実装文中で self への代入が可能 mutating funcとupdate func は同時指定可能 (mutating update func がある) という仕様にして class Cat { ... } var cat: Cat に対しては mutating func は呼び出し可能、 update func は呼び出し可能 let cat: Cat に対しては mutating func は呼び出し可能、 update func は呼び出し不可能 これまでの struct の mutating func については、暗黙に mutating update func とする とすれば var / let 変性は update func の呼び出しを制限するものとして互換性が通る。
3:28 AM
この拡張のメリット ・class実装時においてもstored propertyの変更を静的にチェックされたコードが書ける ・self変更の概念がstruct/classで共通化されてわかりやすくなる