on Fri Apr 01 2016, Maximilian Hünenberger <[email protected]> wrote:

> See inline
>
>> Am 31.03.2016 um 20:14 schrieb Dave Abrahams via swift-evolution 
>> <[email protected]>:
>> 
>> 
>>> on Tue Mar 29 2016, Jason Sadler <[email protected]> wrote:
>>> 
>>> Hi folks,
>>> 
>>> I have an issue with using a heterogeneous array of objects conforming
>>> to a protocol - I want to write an extension on Array (or
>>> CollectionType) that applies only when Element : MyProtocol, but I
>>> can’t call methods in that extension from an instance of [MyProtocol]
>>> because "Using ‘MyProtocol' as a concrete type conforming to protocol
>>> ‘MyProtocol' is not supported”
>> 
>> Hint: write your extension so it applies when Element == MyProtocol instead.
>> 
>
> Why don't we also imply `Element == MyProtocol` when using `Element:
> MyProtocol` ?

Because Element == MyProtocol is more restrictive; it doesn't allow
arbitrary types that conform to—but are not—MyProtocol.

>
> Both extensions can have the exact same functions/implementation.
> Am I missing something?
> I currently don't see why we are forced to distinguish between homogeneous 
> and heterogeneous Collections.
>
> Kind regards
> - Maximilian
>
>>> (For more background, my full use case can be seen in this gist: 
>>> https://gist.github.com/sadlerjw/2cc16b4375b02fe7f400)
>>> 
>>> I’ve asked about this on swift-users
>>> (https://lists.swift.org/pipermail/swift-users/Week-of-Mon-20160321/001560.html)
>>> and got some good workarounds but no one was able to provide me with
>>> information on any future plans in swift to address this issue -
>>> whether that’s making protocols conform to themselves, or some other
>>> improved approach to heterogeneous collections. I wonder if anyone
>>> here can shed some light on this? (I’m new to the mailing lists,
>>> sorry!)
>> 
>> -- 
>> Dave
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

-- 
Dave

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to