5

通過查看RxScala的Scaladoc,我不清楚如何將Signal,Event and Behavior的概念從FRP映射到RxScala。RxScala中來自FRP的事件和行爲的相應概念是什麼?

我也參加了Coursera Reactive course,但未解釋FRP(如Conal Elliott所述)與RxScala之間的連接。我的模糊感覺是,RxScala中的觀察對象與FRP中的行爲/信號相對應,但我不太確定。

有人能解釋一下如何將Conal FRP(Signal,Signal transformer,Event,Behavior)的概念映射到RxScala中定義的概念/類(Future/Observable/Scheduler/Subject)?

回答

3

Conal的信號等同於維基的行爲,它們是時間 - > a,儘管行爲有一個新類型的包裝。事件只是一個與Maybe組成的信號。

RxScala的調度程序似乎是與程序員用於構建FRP應用程序(GUI或不)的接口直接相關的FRP實現/管道。我打賭許多Haskell FRP利用非嚴格性來「安排」未來事件,但這對JVM(特別是)的性能並不友好,因此,調度程序特徵就是用於此目的的。

RxScala的可觀察特性是信號的通用接口,並且可以由原始/基本信號直接實現,即那些不是由其他信號組成的。 Observable對象可以作爲Factory的一部分,也可以作爲combinator庫的一部分,爲向FRP框架提供各種值以及結合現有Observable實例的方法提供了方式。

RxScala的主題特徵是用於用戶定義的派生信號,即那些依賴於其他觀測值的派生信號。要依賴RxScala中的Observable,您必須實現Observer。 Subject僅在Observer和Observable的組合之上添加了兩種方法 - 用於轉換爲Java Rx框架的功能。

由Observable對象的組合器產生的派生信號可以實現Subject,但只保證實現Obervable。這看起來像主題是專門爲當你有一個獨特的/自定義/不尋常的方式來「接線」傳入通知傳出的通知,特別是如果它是有狀態的。

HTH。這是我第一次對RxScala文檔進行掃描,所以很可能我錯過了一些東西。