[swift-evolution] [Proposal] Property behaviors

Matthew Johnson matthew at anandabits.com
Thu Dec 17 19:48:35 CST 2015



Sent from my iPad

> On Dec 17, 2015, at 7:05 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>>> On Dec 17, 2015, at 4:36 PM, Joe Groff via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>>  
>>> It looks to me that the only benefit this has versus IOUs is you can use a `let` instead of a `var`. It's worth pointing out that this actually doesn't even replace IOUs for @IBOutlets because it's commonly useful to use optional-chaining on outlets for code that might run before the view is loaded (and while optional chaining is possible with behavior access, it's a lot more awkward).
>> 
>> There are several advantages over IUO that I see. The behavior can ensure that a mutable delayed var never gets reset to nil, and can dynamically enforce that an immutable delayed var/let isn't reset after it's been initialized. It also communicates intent; as I mentioned to Matthew in another subthread, 
> 
> Another benefit is that this allows elimination of an entire use-case for IOUs.  This makes it more appetizing and possible to push IOUs further off into a corner.  I’m personally interested in the idea of IOUs evolving into something that isn’t a first class type - instead they could only exist in argument and return types.  Eliminating a common reason that people use them for properties would help with that.

+1 to this.  Anything that replaces potentially unsafe patterns with safer patterns is a step in the right direction.  That's why I think it's so important to have compiler support for delayed properties one way or another.

Matthew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151217/0835373e/attachment.html>


More information about the swift-evolution mailing list