> 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