我有一个协议和类,
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'有什么区别?