Swift Combine 的类型看着真心累啊

2022-07-08 14:07:12 +08:00
 chiaf
func stories() -> AnyPublisher<[Story], Error> {
    URLSession.shared
      .dataTaskPublisher(for: EndPoint.stories.url)
      .map(\.data)
      .decode(type: [Int].self, decoder: decoder)
      .mapError { error -> API.Error in
        switch error {
        case is URLError:
          return Error.addressUnreachable(EndPoint.stories.url)
        default:
          return Error.invalidResponse
        }
      }
      .filter({ !$0.isEmpty })
      .flatMap { storyIDs in
        mergedStories(ids: storyIDs)
      }
      .scan([]) { stories, story -> [Story] in
        stories + [story]
      }
      .map{ $0.sorted() }
      .eraseToAnyPublisher()
}

光标放在 eraseToAnyPublisher 后面,按 esc ,能看到最后的类型

我的妈,就不能简化下吗

希望能向 RXSwift 学习下吧,别嵌套这么多层了,看着眼晕😵‍💫

1316 次点击
所在节点    Swift
2 条回复
ostholz
2022-07-08 15:02:04 +08:00
确实 RxSwift 更直观一些. Combine 看着眼累
ansonsiva
2022-07-08 15:11:58 +08:00
能不用就不用,哈哈哈,必须要用就用别人的😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864929

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX