> On May 15, 2016, at 11:55 AM, Neil Faiman via swift-users 
> <swift-users@swift.org> wrote:
> 
> 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 {
>                           ^

Unfortunately, it's a limitation of our type system today that 
class/struct/enum extensions can't use '==' constraints. It can often be worked 
around by making a protocol instead.

-Joe

> 
>> 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

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

Reply via email to