我很困惑...我什至不知道编译器认为会发生什么,但是我有90%的把握这应该是可能的:
class Generic<Type: Any> {
}
protocol Foo {
func bar(_ baz: Generic<Any>)
}
class SomeFoo: Foo {
func bar(_ baz: Generic<Any>) {
print("Got", baz)
}
}
let someFoo = SomeFoo()
let generic = Generic<String>()
someFoo.bar(generic) // Compile error: Cannot convert value of type 'Generic<String>' to expected argument type 'Generic<Any>'
这是怎么回事,有什么解决方法?当然,必须有一些解决方法...
最佳答案
这称为协方差,Swift中的用户类型不支持这种协方差(据我所知,数组除外)。 BTW Objective-C泛型以某种方式支持协方差。
在您的情况下,我可以从2个选项中进行选择:
Generic
类关于swift - 无法将 'Generic<String>'类型的值转换为预期参数类型 'Generic<Any>',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41516327/