无法使用“协议”类型的参数列表调用

时间:2017-12-20 13:30:09

标签: swift swift-protocols

我有一个协议和类,

protocol MyProtocol{
    func myProtocolFunc()
}

class MyClass : MyProtocol{
    func myProtocolFunc() {
        print("Hello")
    }
}

两个功能

func func1(_ value: MyProtocol){
    value.myProtocolFunc()
}

func func2<T>(_ value: T) where T : MyProtocol{
    value.myProtocolFunc()
}

像这样调用func1和func2:

    let a = MyClass()
    func1(a) //print Hello
    func2(a) //print Hello

    let b = a as MyProtocol
    func1(b) //print hello
    //Why?
    func2(b) //cannot invoke 'func2' with an argument list of type '(MyProtocol)'

'func1'和'func2'有什么区别?

0 个答案:

没有答案