<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ReactiveSwift函數(shù)響應(yīng)式編程庫

          聯(lián)合創(chuàng)作 · 2023-09-28 12:25

          ReactiveSwift 是出自 ReactiveCocoa 小組的純 Swift 風(fēng)格 FRP。 ReactiveSwift 提供了可組合、可聲明以及靈活的原語,建立在時間流的大概念之下。

          這些原語可用于統(tǒng)一展現(xiàn)通用 Cocoa 以及泛型編程模式,這些都是觀察者的行為基礎(chǔ)。例如委派模式、回調(diào)閉包、通知、控制動作、響應(yīng)者鏈?zhǔn)录uture/Promise 以及 K/V 的監(jiān)控。所有的這些不同的機(jī)制都使用相同的方法進(jìn)行呈現(xiàn),可以很方便的將這些組合在一起,更少的意大利面條式的代碼以及狀態(tài)來彌補(bǔ)其中的縫隙。

          示例代碼:

          // Purchase from the vending machine with a specific option.
          vendingMachine.purchase
              .apply(snackId)
              .startWithResult { result
                  switch result {
                  case let .success(snack):
                      print("Snack: \(snack)")
          
                  case let .failure(error):
                      // Out of stock? Insufficient fund?
                      print("Transaction aborted: \(error)")
                  }
              }
          
          // The vending machine.
          class VendingMachine {
              let purchase: Action<Int, Snack, VendingMachineError>
              let coins: MutableProperty<Int>
          
              // The vending machine is connected with a sales recorder.
              init(_ salesRecorder: SalesRecorder) {
                  coins = MutableProperty(0)
                  purchase = Action(state: coins, enabledIf: { $0 > 0 }) { coins, snackId in
                      return SignalProducer { observer, _ in
                          // The sales magic happens here.
                          // Fetch a snack based on its id
                      }
                  }
          
                  // The sales recorders are notified for any successful sales.
                  purchase.values.observeValues(salesRecorder.record)
              }
          }

          編者注:

          函數(shù)響應(yīng)式編程(Functional Reactive Programming:FRP)是一種和事件流有關(guān)的編程方式,其角度類似EventSoucing,關(guān)注導(dǎo)致狀態(tài)值改變的行為事件,一系列事件組成了事件流。FRP是更加有效率地處理事件流,而無需顯式去管理狀態(tài)。

          具體來說,F(xiàn)RP包括兩個核心觀點(diǎn):

          1. 事件流,離散事件序列

          2.  

            屬性properties, 代表模型連續(xù)的值。

          一系列事件是導(dǎo)致屬性值發(fā)生變化的原因。FRP非常類似于GOF的觀察者模式。

          瀏覽 15
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲婷婷成人激久久月天 | 日本免费黄色电影网站 | 日本成人三级片在线观看 | 九九九电影亚洲 | 亚洲综合免费观看高清完整 |