Hi all, I want to initialize constant object graph with cycles. I've considered two workarounds, but this is not a way I want it to be.
Here is an example: ``` // I have a context protocol Context : class { /* some */ } // I have an object that has sense only in context class ObjectInContext { private weak var context: Context? init(context: Context) { self.context = context } } // This is what I want to do // The object graph has a cycle, but there is no a retain cycle class ContextA : Context { let object: ObjectInContext init() { self.object = ObjectInContext(context: self) // this code will not compile for many good reasons } } // This is workaround #1 // It looks bad for 2 reasons: implicitly unwrapped optional, it is easy to forget to initialize object class ContextB : Context { var object: ObjectInContext! init() { self.object = ObjectInContext(context: self) } } // This is workaround #2 // It looks bad because it is even easier to forget to initialize object in init class ContextC : Context { lazy var object: ObjectInContext = ObjectInContext(context: self) init() { let _ = self.object // lazy is not atomic so I rather initialize it here } } ``` Does anyone have any ideas how can I do this without workarounds? Thanks, Anton Mironov _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev