假设我有这些协议
protocol Actionable {
}
protocol M: class {
associatedtype Action: Actionable
var views: [Action] { get set }
}
和两个功能
func f(view: Actionable) {
}
func g(views: [Actionable]) {
}
我扩展了协议M
extension M {
func add(view: Action) {
views.append(view)
f(view)
g(views)
}
}
当我打电话f(view
时它有效。但是当我打电话时g(views)
它显示错误
无法将类型“[Self.Action]”的值转换为预期的参数类型“[Actionable]”
这里g
接受一个数组而不是像f
. 为什么在这种情况下数组很重要?如何解决这个问题?
作为旁注,这似乎也是泛型结构的错误
protocol Actionable {
}
struct M<T: Actionable> {
var views: [T]
}
func g(views: [Actionable]) {
}
extension M {
func add() {
g(views)
}
}