Is this a relatively new language change? When I try it with the version of 
Swift that comes with Xcode 7.3.1, I get

    error: same-type requirement makes generic parameters 'T1' and 'T2' 
equivalent
    extension Foo where T1 == T2 {
                           ^


> On May 15, 2016, at 1:33 PM, Karl <razie...@gmail.com> wrote:
> 
> Yes. You need to put it in an extension.
> 
> extension Foo where T1 == T2 {
>    convenience init(values: [T1]){
>    ….
>    }
> }
> 
>> On 15 May 2016, at 14:45, Neil Faiman via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>> Is it possible for a generic class to have methods (specifically, 
>> initializers) which are only defined if the generic parameters meet certain 
>> constratins?
>> 
>> Here’s a concrete example:
>> 
>>   class Foo <T1, T2> {
>>       init(pairs: [(T1, T2)]) {}
>>       // What I’d like to be able to doL
>>       convenience init "where T1 == T2" (values: [T1]) { self.init(pairs: 
>> values.map{ ($0, $0) }) }
>>   }
>> 
>> That is, I’d like to provide a convenience initializer that takes an array 
>> of values instead of pairs, and turns the values into pairs, IF THE TWO 
>> GENERIC TYPE PARAMETERS ARE THE SAME.
>> 
>> I can’t find a way to accomplish this. Is there one?


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

Reply via email to