> On 13 Nov 2016, at 16:16, Jean-Daniel via swift-evolution 
> <[email protected]> wrote:
> 
>> 
>> Le 13 nov. 2016 à 03:37, Dennis Lysenko via swift-evolution 
>> <[email protected] <mailto:[email protected]>> a écrit :
>> 
>> That's a good point in Jay's example and from what I can tell a good way to 
>> address it, Haravikk. 
>> 
>> I've done some work in a language that only provides type narrowing for 
>> immutable types (that'd be Kotlin as I've mentioned before) and whenever 
>> I've used it it feels like the only thing it's really been missing is the 
>> "if let" construct allowing you to bind and unwrap mutable values, which 
>> leads me to think that synergistically, in Swift, this would be fantastic. 
>> The main benefit probably is that it would allow code to read much better.
> 
> IMHO, the Kotlin solution is flaw. The fact that type narrowing does not 
> works for var and that there is no simple way to unwrap optional just force 
> the developer either to introduce local variable, or to use the force unwrap 
> operator.
> Moreover, introducing a unwrap syntax (if let) like in swift would just 
> result in having 2 different and inconsistent way to do the same thing.

I'll have to take a closer look at how Kotlin does this when I get a chance, 
but how would this affect the two proposals as they currently stand?

https://github.com/Haravikk/swift-evolution/blob/master/proposals/NNNN-type-narrowing.md
https://github.com/Haravikk/swift-evolution/blob/master/proposals/NNNN-optional-unwrapping.md

These keep automatic narrowing of polymorphic types, but requires explicit 
narrow/unwrapping of optionals (because we can define methods/properties on 
Optional there's no other choice unfortunately); it would work for both mutable 
and immutable values, but mutable reference types require an extra step due to 
the potential for unsafe operations.

I think that's about as flexible as we're going to be able to get without 
introducing other difficulties.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to