谁能解释Swift Combine的Subject.eraseToAnySubject()方法以及应在何处使用?

时间:2019-06-15 14:03:15

标签: swift combine

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

但是,苹果文档几乎没有提供任何详细信息:https://developer.apple.com/documentation/combine/passthroughsubject/3241547-erasetoanysubject

任何人都可以解释它的工作原理以及在何处使用吗?

还可以使用some关键字来避免使用AnySubject吗?

1 个答案:

答案 0 :(得分:3)

在合并中,当您将发布者链接到运营商时,返回类型变得非常复杂,因为它包含有关链中每个发布者的详细信息。

例如,一个简单的字符串Publisher附带一个过滤器和map运算符,其返回类型为:<Filter<Map<Published<String, Error>>>>

eraseToAny使用类型擦除器模式捕获有关返回类型的实际重要信息。在给定的示例中,添加eraseToAnyPublisher会将类型缩短为更简洁的<AnyPublisher<String, Error>>