我对Swift泛型不是很在行。请你帮我解决这个编译错误:
protocol FooProtol<T> {
associatedtype T
func print(_: T)
}
class Foo: FooProtocol {
typealias T = Bar
func print(_ bar: Bar) {
print("\(bar)")
}
}
class Baz {
func qux(foo: any FooProtocol) {
let bar = Bar
foo.print(bar) // Compilation error: "Cannot convert value of type 'Bar' to expected argument type '(some FooProtocol).T'"
}
}
1条答案
按热度按时间ivqmmu1c1#
看起来你真的不需要一个不透明的类型,试着让你的qux方法成为泛型:
现在添加通用约束: