[swift-evolution] Pitch: Remove default initialization of optional bindings

Slava Pestov spestov at apple.com
Mon Nov 6 20:52:40 CST 2017



> On Nov 6, 2017, at 4:29 PM, Kelvin Ma <kelvin13ma at gmail.com> wrote:
> 
> hot take: i use the second one a lot but only because i always forget the first one exists. So I type the = nil just to “be sure”.

Yeah, that’s one of my arguments against having the feature, along with the simple fact that if the language did not have it already, nobody would be requesting this to be added as a special case for optionals.

However, since I also want to avoid needless source compatibility churn, I’m fine with keeping the feature — it’s not a huge burden to maintain (unlike, say, AnyObject dispatch :) )

Slava

> 
> On Mon, Nov 6, 2017 at 4:33 PM, Slava Pestov via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> Hi all,
> 
> Right now, the following two declarations are equivalent:
> 
> struct S {
>   var x: Int?
> }
> 
> struct S {
>   var x: Int? = nil
> }
> 
> That is, mutable bindings of sugared optional type (but not Optional<T>!) always have a default value of ‘nil’. This feature increases the surface area of the language for no good reason, and I would like to deprecate it in -swift-version 5 with a short proposal. Does anyone feel strongly about giving it up? I suspect most Swift users don’t even know it exists.
> 
> Slava
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171106/798a9eee/attachment.html>


More information about the swift-evolution mailing list