Worth mentioning that @objc protocols do conform to themselves as long as they 
do not have static methods or initializer requirements. However this may be too 
heavy-handed if a simple overload can do the trick.

Slava

> On Mar 9, 2017, at 1:10 PM, Guillaume Lessard via swift-users 
> <swift-users@swift.org> wrote:
> 
> 
>> On Mar 9, 2017, at 12:46, Edward Connell via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>> // Everything compiles fine until this
>> someFunc(items: items)
> 
> This is a frequent pain point: protocol existentials cannot stand in for the 
> protocol they represent.
> Your function wants a concrete type that conforms to ItemProtocol, but an 
> array of disparate types which happen to separately conform to ItemProtocol 
> does not do that.
> 
> You will need to overload thusly:
> 
> func someFunc(items: [ItemProtocol]) {
>  for item in items {
>    print(item.message)
>  }
> }
> 
> until, someday, this pain point is resolved.
> 
> Cheers,
> Guillaume Lessard
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

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

Reply via email to