Avatar
omochimetaru 6/30/2021 2:38 AM
この RangeStorage(0...14) の実行が、最初の Hud.init のときにしかされず、2回目以降はキャッシュされたオブジェクトが渡される。
2:38 AM
struct Hud { @Clamped(RangeStorage(0...14)) var bar = 5 @Clamped(RangeStorage(1...9)) var foo = 1 } var hud1 = Hud() var hud2 = Hud() // desugars to struct Hud { static let bar$shared = RangeStorage(0...14) static let foo$shared = RangeStorage(1...9) var bar = Clamped(wrappedValue: 5, @shared: bar$shared) var foo = Clamped(wrappedValue: 1, @shared: foo$shared) } // both Hud's get access to the same $shared properties. var hud1 = Hud() var hud2 = Hud() ↑のdesugars toと見比べるのが挙動は一番わかりやすいな