> On Jun 8, 2017, at 5:09 AM, Gor Gyolchanyan via swift-evolution > <[email protected]> wrote: > > 1. Arbitrary `self` Assignments In Intializers > > The first ideas is to allow `self = nil` inside failable initializers > (essentially making `self` look like `inout Self?` instead of `inout Self` > with magical `return nil`), so that all initializers uniformly can be written > in `self = ...` form for clarity and convenience purposes. This should, > theoretically, be nothing but a `defer { return nil }` type of rewrite, so I > don't see any major difficulties implementing this. This is especially useful > for failable-initializing enums where the main switch simply assigns to self > in all cases and the rest of the initializer does some post-processing.
I don't see how to avoid source incompatibility and uglification of failable initializer implementations here. Allowing `self = nil` inside a failable initializer would require `self` to be an optional. That in turn would require every use of `self` in the initializer to be nil-checked or forced. I don't think that loss everywhere outweighs the gain of `self = nil` in some places. -- Greg Parker [email protected] <mailto:[email protected]> Runtime Wrangler
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
