2016-03-05 123 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