我有一些 swift 结构,它们的协议合规性是通过具有相同方法名称的单个扩展生成的,这些扩展的返回类型不同,它们依赖于结构。最重要的是,我想在一个泛型函数中使用它们,该函数为泛型类型调用符合协议的函数)。我试图这样做: //: Playground - 名词:人们可以玩耍的地方
import UIKit
protocol FooProt {
typealias T;
static func createMe<T>()->T;
}
struct FooStruct{
}
extension FooStruct: FooProt{
typealias T = FooStruct;
static func createMe () -> FooStruct{
return FooStruct();
}
}
class Creator{
fun createOne<T where T:FooProt>(type:T.Type){
let instance = T.createMe();
}
}
不幸的是,我收到以下错误:/var/folders/sn/78_zvfd15d74dzn01mdv258h0000gq/T/./lldb/3741/playground6.swift:7 :17:注意:协议需要函数 'createMe()' 类型为 ' () -> T ' (又名'<τ_1_0> () -> τ_1_0') 静态函数 createMe()->T;
这里到底有什么不符合的,是否有解决方法?