[swift-evolution] Specify type of a delegate which conforms to a protocol

Maximilian Hünenberger m.huenenberger at me.com
Wed Feb 10 07:44:48 CST 2016


In the thread "Partially constrained protocols" we have discussed a similar approach using where clauses:

        protocol<MyProtocol where Self: UIViewController>

- Maximilian

Am 10.02.2016 um 14:00 schrieb Brent Royal-Gordon via swift-evolution <swift-evolution at swift.org>:

>> So, I definitely think there is room for improvement here… how about recycling the inheritance syntax?
>> 
>> let controller: (UIViewController, UITableViewDatasource)
> 
> This declares a tuple containing a UIViewController and a UITableViewDataSource.
> 
>> I added the braces because it would be really when you add the question mark for an optional value; an alternative for this case would be
>> 
>> let controller: Optional<UIViewController, UITableViewDatasource>
> 
> This attempts to declare an optional with two generic types, which doesn't work because Optional only has one type parameter. (But other types, like Dictionary, *do* take two type parameters.)
> 
> Swift does already have a syntax for declaring that a type must conform to two (or more!) protocols:
> 
>    let controller: protocol<UITableViewDataSource, UITableViewDelegate>
> 
> I think this could probably be extended to support one class type as well, perhaps with a new name:
> 
>    let controller: all<UIViewController, UITableViewDataSource>
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> 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