[swift-evolution] Inheritance with a Constrain

Douglas Gregor dgregor at apple.com
Fri Dec 11 01:41:36 CST 2015



Sent from my iPhone

> On Dec 9, 2015, at 2:18 AM, Kevin Wooten via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I have ran into this problem multiple times now.  When creating libraries for Thrift and YAML parsing we were forced to create wrapper objects for Array, Set & Dictionary to make then Hashable for Hashable elements; made me feel dirty as the solution seemed so obvious that I couldn’t believe it wasn’t already available.
> 
> That being said. This is specifically mentioned as “in scope” for Swift 3 (under Generics).  

Right. We tend to refer to this as "conditional conformance".

> Does that mean a proposal is already available from the internal Swift team?

Not yet. I have a general sense of the semantics we need here, but need to work out the implementation model a bit before putting together a proposal. 

> Is it already being developed internally?

No. When it's being worked on, it will happen on GitHub. 

  - Doug


> 
>> On Dec 9, 2015, at 12:09 AM, Thane Gill via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> There have been many use cases that I’ve come across where I want to do something like this:
>> 
>> protocol SomeProtocol { }
>> 
>> extension Array: SomeProtocol where Element: SomeProtocol { }
>> 
>> This seems like a something that swift should move toward as it is a “protocol oriented language”. This would enable ease of building new libraries that need to extend collection types and other storage type classes in the standard library.
>> 
>> - Thane Gill
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution


More information about the swift-evolution mailing list