[swift-users] Conditional generic initializers?
Karl
razielim at gmail.com
Sun May 15 12:33:38 CDT 2016
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 at 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?
>
> Thanks,
>
> Neil Faiman
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
More information about the swift-users
mailing list