将非泛型扩展为泛型类型

时间:2015-08-09 21:32:02

标签: swift generics

我有这个代表非通用Struct的代码:

struct rum {
    var prop = "Hello"
}

让我们假设我需要为此Struct创建一个扩展来接收泛型类型。为此,我尝试这段代码:

extension rum <T>{

    func release(bo: T){
        println(T)
    }

}

但Xcode给了我很多错误,朗姆酒没有通用类型。但这个想法是创建一个非泛型的Struct并将其转换为泛型。有可能吗?

1 个答案:

答案 0 :(得分:2)

如果rum是一个类,您将获得更大的灵活性,因为您可以从中派生泛型类,并在该泛型类上定义扩展。但是,struct是值类型,因此您无法从中派生类。

由于rum不是通用struct,因此您需要将扩展​​方法设为通用,如下所示:

extension rum {

    func release<T>(bo: T){
        println(prop)
        println(bo)
    }

}

不幸的是,这意味着您希望通用的所有扩展方法都需要使用<T>进行修饰。