2

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

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

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

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

4

1 回答 1

6

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

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

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

于 2019-06-20T18:51:15.780 回答