我想将结构的类型(“ 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)

10-05 20:12