2016-03-05 112 views
0

我有一个泛型类型,我想为其添加扩展,但编译器抱怨泛型没有声明。如何将扩展添加到泛型?

这里是我想要做的事:

public class MyGenericType<T> { 
    let abc = 123 
} 

extension MyGenericType<T> { // Error: Use of undeclared type 'T' 

    public convenience init(value: String, defaultValue: T) { 
     self.init() 

     print(value) 
    } 

} 

是否有可能延长添加到MyGenericType<T>

回答

0

只要做到:

extension MyGenericType { 
    public convenience init(value: String, defaultValue: T) { 
     self.init() 
     print(value) 
    } 
} 

documentation

当你扩展泛型类型,你不提供一个类型参数列表的扩展定义的一部分。相反,扩展体中可以使用类型定义的类型参数列表,原始类型参数名称用于引用原始定义中的类型参数。

+0

但是,如何让'便利init'中的第二个参数成为泛型? – TruMan1

+0

你只是使用'T'。请参阅文档中引用的回复内容。 – courteouselk