我可以看到Subject.eraseToAnySubject()
返回了具体的Subject
类型AnySubject
。我假设这是使用类型橡皮擦模式。
但是,苹果文档几乎没有提供任何详细信息:https://developer.apple.com/documentation/combine/passthroughsubject/3241547-erasetoanysubject
任何人都可以解释它的工作原理以及在何处使用吗?
还可以使用some
关键字来避免使用AnySubject
吗?
答案 0 :(得分:3)
在合并中,当您将发布者链接到运营商时,返回类型变得非常复杂,因为它包含有关链中每个发布者的详细信息。
例如,一个简单的字符串Publisher附带一个过滤器和map运算符,其返回类型为:<Filter<Map<Published<String, Error>>>>
eraseToAny
使用类型擦除器模式捕获有关返回类型的实际重要信息。在给定的示例中,添加eraseToAnyPublisher
会将类型缩短为更简洁的<AnyPublisher<String, Error>>