[swift-evolution] [Pitch] Introducing the "Unwrap or Die" operator to the standard library

Tony Allevato tony.allevato at gmail.com
Wed Jun 28 11:13:18 CDT 2017


It's hard for me to articulate, but "foo !! message" feels a little too
much like a Perl-ism for my taste. Objectively that's not a great criticism
on its own, but I just don't like the "smell" of an operator that takes a
value on one side and a string for error reporting purposes on the other.
It doesn't feel like it fits the style of Swift. I prefer a version that
makes the call to fatalError (and thus, any other non-returning handler)
explicitly written out in code.

So, if the language can already support this with ?? and autoclosure/Never
as was shown above, I'd rather see that added to the language instead of a
new operator that does the same thing (and is actually less general).

On Wed, Jun 28, 2017 at 8:52 AM Jacob Williams via swift-evolution <
swift-evolution at swift.org> wrote:

> I feel that the !! operator would be necessary for indicating that if this
> fails then something went horribly wrong somewhere and we should throw the
> fatalError. This allows the inclusion of optimizations using -Ounchecked
> and is clear that this is an operation that could result in a runtime error
> just like force unwrapping.
>
> If we want code clarity and uniformity, then I think !! Is much better
> than ?? because it goes right along with the single ! Used for force
> unwrapping. However, this does depend on if the operator would be returning
> some kind of error that would cause the program to exit.
>
> I think the ?? operator should not cause a program to exit early. It goes
> against optional unwrapping principles. I think code could get very
> confusing if some ? would return nil/a default value, and others would be
> causing your program to crash and exit. The ? operators should always be
> classified as safe operations.
>
> On Jun 28, 2017, at 9:41 AM, Ben Cohen via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>
> On Jun 28, 2017, at 8:27 AM, David Hart via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> Count me in as a strong proponent of ?? () -> Never. We don't need to
> burden the language with an extra operator just for that.
>
>
> You could say the same about ??
>
> The concern that an additional operator (and one that, IMO, fits well into
> existing patterns) is so burdensome seems way overweighted in this
> discussion IMO.
>
> Adding the operator, and encouraging its use, will help foster better
> understanding of optionals and legitimate use of force-unwrapping in a way
> that I don’t think `?? fatalError` could.
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170628/31b63061/attachment.html>


More information about the swift-evolution mailing list