[swift-evolution] guard let x = x

David Waite david at alkaline-solutions.com
Sat Oct 29 04:02:51 CDT 2016


> On Oct 26, 2016, at 10:37 AM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
> 
> To me, this is the most promising direction, but I’d suggest the use of “unwrap" as the keyword.  If you compare these two:
> 
> a) guard let foobar = foobar else { … }
> b) guard unwrap foobar else { … }
> 
> I think that b) wins by virtue of eliminating repetition ("foobar = foobar" fails DRY principles), but retains clarity by introducing a word into the grammar that people already commonly know and use, and which is googlable if they don’t.
> 
> This also gives us the conceptual hook to make the “unwrapping an optional” behavior (which occurs with if let, optional chaining, etc) be something that could be extended to other similar user defined types, such as a Result type.

This might need a bit more fleshing out of the details. Given a result of T or Error, I would expect the unwrap operation’s flow control to not be a conditional but a throw - aka "try unwrap result” (or no need for a keyword - try result.unwrap()). That is, unless I specifically request a projection.

For an async/await system based on promises, I would expect to use an “await” keyword, not an “unwrap” keyword. 

> 
> -Chris
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list