Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class WriterProxy<T> {
- var write:T {
- didSet {
- updateClosure(write)
- }
- }
- let updateClosure:(T)->()
- fileprivate init(value:T, updateClosure:@escaping (T)->()) {
- self.write = value
- self.updateClosure = updateClosure
- }
- }
- class SingleWriter<T> {
- private var value:T
- private weak var proxy:WriterProxy<T>?
- var read:T { return value }
- var writer:WriterProxy<T>? {
- get {
- if self.proxy != nil { return nil }
- let proxy = WriterProxy<T>(value:value) {
- self.value = $0
- }
- self.proxy = proxy
- return proxy
- }
- }
- init(value:T) {
- self.value = value
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement