【发布时间】:2021-04-04 10:45:39
【问题描述】:
这是 Swift 中有效的协议声明:
protocol Proto1: class {
func method1() -> Self
func method2() -> [Proto1]
}
但这不是:
protocol Proto2: class {
func method1(param: Self)
func method2() -> [Proto2]
}
错误信息是:
Protocol 'Proto2' 只能用作通用约束,因为它 有 Self 或关联的类型要求
看来,当使用Self 作为函数的返回类型时,Swift 并不认为这是对正在定义的协议的约束,因此可以使用协议本身作为函数的返回类型。但是当使用Self作为函数的参数类型时,行为就完全不同了。
我想知道为什么会有这样的差异?
【问题讨论】:
标签: ios swift swift-protocols associated-types