Avatar
Avatar
Iceman
@swift-6.0.3 final class CoW<Value> { final class Storage { var value: Value init(_ value: Value) { self.value = value } } private var storage: Storage init(_ value: Value) { self.storage = Storage(value) } var value: Value { get { storage.value } set { if !isKnownUniquelyReferenced(&storage) { storage = Storage(newValue) } else { storage.value = newValue } } } } struct MyStruct { var age: Int var next: CoW<MyStruct>? } var aaa = MyStruct(age: 1, next: .init(.init(age: 2))) let iii = aaa print(aaa.next?.value.age) print(iii.next?.value.age) aaa.next?.value.age += 100 print(aaa.next?.value.age) print(iii.next?.value.age)
Optional(2) Optional(2) Optional(102) Optional(102)<stdin>:32:7: warning: expression implicitly coerced from 'Int?' to 'Any' 30 | var aaa = MyStruct(age: 1, next: .init(.init(age: 2))) 31 | let iii = aaa
2.15 KB