【问题标题】:What are the corresponding concepts of Event and Behavior from FRP in RxScala?RxScala 中 FRP 的 Event 和 Behavior 对应的概念是什么?
【发布时间】:2014-03-25 02:31:15
【问题描述】:

通过查看 RxScala 的 Scaladoc,我不清楚如何将 SignalEvent and Behavior 的概念从 FRP 映射到 RxScala。

我也参加了 Coursera Reactive course,但没有解释 FRP(如 Conal Elliott 所述)和 RxScala 之间的连接。我的模糊感觉是 RxScala 中的 Observable 对应于 FRP 中的 Behaviors/Signals 但我不太确定。

有人能解释一下如何将 Conal 的 FRP(Signal,信号转换器,事件,行为)的概念映射到 RxScala 中定义的概念/类(Future/ Observable/ Scheduler/ Subject)吗?

【问题讨论】:

    标签: scala haskell functional-programming reactive-programming rx-java


    【解决方案1】:

    Conal 的 Signal 等价于 wiki 的 Behavior,它们是 Time -> a 尽管 Behavior 有一个新类型的包装器。 Event 只是一个由 Maybe 组成的 Signal。

    RxScala 的调度器似乎是 FRP 实现/管道,与程序员用于构建 FRP 应用程序(GUI 或无)的接口没有直接关系。我敢打赌很多 Haskell FRP 会利用非严格性来“安排”未来的事件,但这不利于 JVM 的性能(尤其是),所以调度程序特性用于此目的。

    RxScala 的 Observable trait 是 Signals 的通用接口,可以直接由原始 / 基本 Signals 实现,即它们不是由其他信号组成的。 Observable 对象有点像工厂,有点像组合库,提供了将各种值提升到 FRP 框架的方法以及一些组合现有 Observable 实例的方法。

    RxScala 的 Subject trait 用于用户定义的派生信号,即那些依赖于其他 Observable 的信号。要依赖 RxScala 中的 Observable,你必须实现 Observer。 Subject 只是在 Observer 和 Observable 的组合之上添加了两个方法——转换为 Java Rx 框架的函数。

    由 Observable 对象的组合器产生的派生信号可以实现 Subject,但只能保证实现 Obervable。似乎 Subject 专门用于当您有一种独特/自定义/不寻常的方式将传入通知“连接”到传出通知时,特别是如果它是有状态的。

    HTH。这是我第一次不仅仅浏览 RxScala 文档,所以我很可能遗漏了一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 2011-04-25
      相关资源
      最近更新 更多