For what it’s worth, I concur. I think type narrowing makes it feel more like 
the language is actually doing some work *for* me rather than me having to 
babysit the language with some new syntax or keyword.

l8r
Sean


> On Nov 2, 2016, at 3:25 PM, Haravikk via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I still think that type narrowing is the right way to handle this like so:
> 
>       if x != nil {
>               // x is definitely not nil inside this block (implicitly 
> unwrapped)
>       } // x remains optional outside of it
> 
>       if (x != nil) || (x == y) {
>               // if y's type is non-optional, then x is definitely not nil 
> inside this block also
>               // i.e- if all conditions narrow to the same result, the type 
> is narrowed inside the block
>       }
> 
>       if x is Foo {
>               x.someMethodSpecificToFoo()
>       }
> 
> Personally I'm very much against the use of shadowing in the first place, and 
> never use it myself. I tend to precede unwrapped value with "this" like so:
> 
>       if let thisFoo = foo {
>               // Do something with thisFoo
>       }
> 
> I know it's maybe down to personal preference but I'd prefer to discourage 
> shadowing entirely, and focus on type-narrowing, as it's a much more natural, 
> and more generally useful, way to handle this "problem", as it doesn't 
> actually require a specific syntax at all; if your condition narrows the 
> type, then you can use the variable as whatever it is known to be.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to