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