我想将结构的类型(“ myStruct”)传递给函数(“ testFunc”),该函数受协议(“ TestProtocol”)约束
protocol TestProtocol {
func getName() -> String
}
func testFunc <T: TestProtocol> (with type: T) {
print ("testFunc")
}
struct myStruct: TestProtocol {
var name: String
func getName() -> String {
return name
}
}
testFunc(with: myStruct.self)
但是我得到的错误是myStruct.Type不符合TestProtocol。显然可以!
最佳答案
使用T.Type
作为参数类型。
protocol TestProtocol {
func getName() -> String
}
func testFunc <T: TestProtocol> (with type: T.Type) {
print ("testFunc")
}
struct MyStruct: TestProtocol {
var name: String
func getName() -> String {
return name
}
}
testFunc(with: MyStruct.self)