struct Payload {}
struct User {}
struct Post {}
protocol Mapper {
associatedtype PayloadType
associatedtype ResultType
func map(_ payload: PayloadType) -> ResultType
}
class AnyMapper<P, R>: Mapper {
private var _mapClouser: (P) -> R
init<M: Mapper>(_ mapper: M) where M.PayloadType == P, M.ResultType == R {
_mapClouser = mapper.map(_:)
}
func map(_ payload: P) -> R {
_mapClouser(payload)
}
}
class UserMapper: Mapper {
func map(_ payload: Payload) -> User {
return User()
}
}
class PostsMapper: Mapper {
func map(_ payload: Payload) -> [Post] {
return [Post(), Post(), Post()]
}
}
let userMapper = AnyMapper(UserMapper())
let postsMapper = AnyMapper(PostsMapper())
var array: [AnyMapper] = [userMapper, postsMapper] <<< Error: Cannot convert value of type 'AnyMapper<Payload, [Post]>' to expected element type 'AnyMapper<Payload, User>'
我试图将 2 个对象放入数组中,但出现此错误:无法将类型“AnyMapper
有人可以向我解释如何修复它吗?