It just seems so obvious to create-if-nil, and makes it nice to reset stuff that should be re-created. In my case, after my NSURLSession gets invalidated, I wanted to set the property to nil, and next time a session was needed, it would just get created.
Sure, I can implement this myself, but ugh. -- Rick Mann rm...@latencyzero.com > On Oct 20, 2017, at 17:58, Jordan Rose <jordan_r...@apple.com> wrote: > > It's not directly related to property behaviors. It was a bug that only > worked with ImplicitlyUnwrappedOptional properties; we patched the type > checker bug that led to it being allowed and didn't even notice until someone > brought it up (SR-5172). > > It would be possible to introduce this as an actual language feature even > without the full property behaviors model, but we wouldn't want to just spell > it 'lazy'. Maybe 'lazy_resettable' or something. And even though I say this, > it's probably unlikely that such a proposal would get through swift-evolution > in the Swift 5 timeframe. > > Meanwhile, it's always possible to implement it by hand, though I can see how > that'd be annoying if you were relying on this and previously got it with a > single '!'. > > class LazyResettableTest { > private func fooInitial() -> String { return "initial value" } > private var fooStorage: String? > var foo: String! { > get { > if fooStorage == nil { fooStorage = fooInitial() } > return fooStorage > } > set { > fooStorage = newValue > } > } > } > > Jordan > > >> On Oct 19, 2017, at 19:59, David Sweeris via swift-users >> <swift-users@swift.org> wrote: >> >> I don't know. IIRC (big if), though, there was talk of adding support for >> "property behaviors"(?). Resetting lazy vars probably would've been one of >> them, and if so, it probably got pulled so that we wouldn't risk breaking >> source compatibility later by adding a consistent syntax for other >> behaviors. I think. I wish I could remember who'd brought up the idea... >> they'd probably know straight away if that's what happened. >> >> - Dave Sweeris >> >>> On Oct 19, 2017, at 5:40 PM, Rick Mann via swift-users >>> <swift-users@swift.org> wrote: >>> >>> Googling for the answer, it seemed some versions of Swift supported setting >>> a lazy var property to nil, such that the next time it's accessed, the >>> initializer would be run again. >>> >>> But I just tried this in a playground in Swift 4 and it doesn't work. >>> >>> It sure seems to me like it should work. What's the reasoning for the >>> current behavior? >>> >>> -- >>> Rick Mann >>> rm...@latencyzero.com >>> >>> >>> _______________________________________________ >>> swift-users mailing list >>> swift-users@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-users >> >> _______________________________________________ >> swift-users mailing list >> swift-users@swift.org >> https://lists.swift.org/mailman/listinfo/swift-users >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users