谁能解释 Swift Combine 的 Subject.eraseToAnySubject() 方法以及它应该在哪里使用?

And*_*ons 2 swift combine

我可以看到Subject.eraseToAnySubject()返回具体Subject类型AnySubject。我假设这是使用类型橡皮擦模式。

然而,苹果文档几乎没有提供任何细节:https : //developer.apple.com/documentation/combine/passthroughsubject/3241547-erasetoanysubject

谁能解释它是如何工作的以及它应该在哪里使用?

另外,是否可以使用some关键字来避免使用AnySubject?

cds*_*per 6

在 Combine 中,当您将 Publishers 链接到 Operators 时,返回类型会很快变得复杂,因为它包含有关链中每个发布者的特定详细信息。

例如,带有过滤器和映射运算符的简单字符串 Publisher 将具有以下返回类型: <Filter<Map<Published<String, Error>>>>

eraseToAny使用类型橡皮擦模式来捕获关于返回类型的实际重要内容。在给出的示例中,添加 aneraseToAnyPublisher会将类型缩短为更简洁的<AnyPublisher<String, Error>>