Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. class WriterProxy<T> {
  2. var write:T {
  3. didSet {
  4. updateClosure(write)
  5. }
  6. }
  7. let updateClosure:(T)->()
  8. fileprivate init(value:T, updateClosure:@escaping (T)->()) {
  9. self.write = value
  10. self.updateClosure = updateClosure
  11. }
  12. }
  13.  
  14. class SingleWriter<T> {
  15. private var value:T
  16. private weak var proxy:WriterProxy<T>?
  17. var read:T { return value }
  18. var writer:WriterProxy<T>? {
  19. get {
  20. if self.proxy != nil { return nil }
  21. let proxy = WriterProxy<T>(value:value) {
  22. self.value = $0
  23. }
  24. self.proxy = proxy
  25. return proxy
  26. }
  27. }
  28. init(value:T) {
  29. self.value = value
  30. }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement