既然我们已经有了参数化协议,为什么我们需要类型擦除

问题描述 投票:0回答:1

我们在

AnyPublisher
框架中有许多类型擦除类,例如
Combine
。但既然我们已经有了参数化协议,为什么还需要它们呢?

例如,我们为什么不直接将

let myPublisher = AnyPublisher<Int, Never>
替换为
any Publisher<Int, Never>
呢?我能说的唯一区别是类型擦除为我们提供了存在类型,但我们为什么要关心?

swift swift-protocols type-erasure
1个回答
0
投票

但是为什么还需要它们,因为我们已经有参数化协议了? (强调已添加)

Combine 比参数化协议早几年。虽然您可以使用 AnyPublisher 完成的大多数事情现在都可以使用

any Publisher
完成,但不久前情况并非如此。自
async
推出以来,Combine 几年来几乎没有更新(大多数更新都是为了提供
async
兼容性)。

© www.soinside.com 2019 - 2024. All rights reserved.