【问题标题】:Can anyone explain Swift Combine's Subject.eraseToAnySubject() method and where it should be used?谁能解释一下 Swift Combine 的 Subject.eraseToAnySubject() 方法以及应该在哪里使用它?
【发布时间】:2019-06-15 14:03:15
【问题描述】:

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

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

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

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

【问题讨论】:

标签: swift combine


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 2014-08-09
    • 2023-03-23
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多