我们在
AnyPublisher
框架中有许多类型擦除类,例如 Combine
。但既然我们已经有了参数化协议,为什么还需要它们呢?
例如,我们为什么不直接将
let myPublisher = AnyPublisher<Int, Never>
替换为 any Publisher<Int, Never>
呢?我能说的唯一区别是类型擦除为我们提供了存在类型,但我们为什么要关心?
但是为什么还需要它们,因为我们已经有参数化协议了? (强调已添加)
Combine 比参数化协议早几年。虽然您可以使用 AnyPublisher 完成的大多数事情现在都可以使用
any Publisher
完成,但不久前情况并非如此。自 async
推出以来,Combine 几年来几乎没有更新(大多数更新都是为了提供 async
兼容性)。