通过查看RxScala的Scaladoc,我不清楚如何将Signal,Event and Behavior的概念从FRP映射到RxScala。
我也选择了Coursera Reactive course,但是未说明FRP(如Conal Elliott所述)和RxScala之间的连接。我模糊的感觉是RxScala中的Observables对应于FRP中的Behaviors / Signals,但是我不太确定。
有人可以解释一下如何将Conal的FRP概念(Signal,信号转换器,事件,行为)映射到RxScala中定义的概念/类( future /可观察/调度程序/主题)吗?
最佳答案
Conal的Signal等同于Wiki的Behavior,它们是Time-> a,尽管Behavior周围有新包装。事件只是由Maybe组成的信号。
RxScala的Scheduler似乎是FRP实现/管道,与程序员用来构建FRP应用程序的界面(GUI或否)没有直接关系。我敢打赌,很多Haskell FRP都利用了非严格性,因此可以“计划”将来的事件,但这对JVM的性能(尤其是)没有帮助,因此,使用了计划程序特性。
RxScala的Observable特性是Signals的通用接口(interface),可以直接由原始/基本Signals实现,即这些信号不是由其他信号组成的。 Observable对象充当了Factory的角色,并充当了组合器库,提供了一种将各种值提升到FRP框架的方法,以及一些组合现有Observable实例的方法。
RxScala的主题特征适用于用户定义的派生信号,即那些依赖于其他Observable的信号。要依赖RxScala中的Observable,必须实现Observer。主题仅在Observer和Observable的组合之上添加了两个方法-用于转换为Java Rx框架的函数。
由Observable对象的组合器产生的派生信号可以实现Subject,但只能保证实现Obervable。主题似乎特别适用于您采用独特/自定义/非常规方式将传入通知“链接”到传出通知的情况,尤其是在有状态的情况下。
HTH。这是我第一次扫描RxScala文档,因此我可能错过了一些东西。