用map还是flattenMap

发布于 2022-09-01 16:00:37 字数 796 浏览 18 评论 0

新学习ReactiveCocoa,在困惑什么时候该用map:,什么时候该用flattenMap:。网上很多地方说如果是那种包含流的流stream-of-streams)时,就要用flattenMap。我这边有段代码:

- (RACSignal *)signInSignal {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [self.signInService signInWithUsername:self.usernameTextField.text
                                      password:self.passwordTextField.text
                                      complete:^(BOOL success) {
                                          [subscriber sendNext:@(success)];
                                          [subscriber sendCompleted];
                                      }];
        return nil;
    }];
}

解释说这个方法会返回一个包含流的流stream-of-streams),各位大牛能够解释下为什么吗?谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅听莫相离 2022-09-08 16:00:37

最近我也在学习RAC,不知道你的疑问解决了么?我的理解是这样的,RACSignal作为RACStream的子类,本身就具有流的概念,map和flattenMap的区别大概是:map只能一一对应的转换,就是一个源信号只能转换成一个新的信号输出,但是flattenMap是可以转换成一个流,就是需要根据这个源信号发出一系列的信号,实际上map的实现就是使用flattenMap生成仅含有一个信号(这个信号值就是map参数block的返回值)的流。也就是说,map是flattenMap在流中信号数量为1,而且信号值是block的返回值的特殊情况

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文