来自文档RACStream代表“Monad”? 有人可以解释这在RACStream的上下文中具体意味着什么。 我查看了维基上的功能意义,但我很难看到它如何使Reactive-Cocoa受益以及为什么选择这种模式?
答案 0 :(得分:7)
在Objective-C的上下文中,RACStream
是monad的事实基本上意味着它遵循一种模式。在这种情况下,RACStream
使用-bind:
方法,这是更常用的-flattenMap:
的“原始”版本,这些方法基本上是RACStream
a单子。
(有关其使用的更多信息,请查看documentation for -flattenMap:
。)
给定一个块B
,它取一个值并返回一个RACStream
(即一个将值映射到流的块),并给出一个流A
,调用[A flattenMap:B]
将产生一个“聚合”流,其中包含块B返回的集合流集中的所有值(对A
中的每个值调用)。 (编辑:这个狭隘的解释没有描述结果流上的值的时间,也没有描述错误传播。如果您对这些问题有疑问,我很乐意回答它们。)
可以在ReactiveCocoa的Basic Operators
文档中找到几个示例。
至于好处,我认为溪流是monad的事实大多只对那些有monad经验的人有益。另一方面,文档中几乎没有提到monad,更重要的是,ReactiveCocoa根本不需要monad的知识,因此不熟悉Monad没有任何缺点。