iOS RAC學習筆記(一) RACStream

2021-07-15 07:55:04 字數 2014 閱讀 5806

racstream是racsignal和racsequence的父類,定義了一些流的操作方法。從名字上可以看出來,這個物件就像流一樣可以往任何乙個出口流,同時也可以給這個流設計一道道關卡,改變流(這裡的改變,既包括流的內容,也包括融合,也包括流的篩選等等)。

1. racstream簡介

(a)racstream類中提供兩個類方法,+empty 和 +return,第乙個是建立乙個空的流物件;第二個是建立乙個基於方法引數值的乙個流。

(b)racstream類中提供了幾個最基本的改變流的方法,-bind,-concat和-zipwith(之後會在racsignal中對這些進行詳細講解)。第乙個方法,是只改變當前流物件的方法;第二個方法是在當前響應流已經完成後,緊接著注入新的響應流;第三個方法,是將不同的流進行打包合成乙個流。

(c)在實現了最基本的改變流的方法之後,基於這些改變方法而形成很多更好更方便的改變方法也就出來了,這些方法也都是在racstream(operation)這個擴充套件中。

2. racstream(operation)介紹

(a)flattenmap:在bind基礎上封裝的改變方法,用自己提供的block,改變當前流,變成block返回的流物件。

(b)flatten:在flattenmap基礎封裝的改變方法,如果當前反應流中的物件也是乙個流的話,就可以將當前流變成當前流中的流物件

(c)map:在flattenmap基礎上封裝的改變方法,在flattenmap中的block中返回的值必須也是流物件,而map則不需要,它是將流中的物件執行block後,用流的return方法將值變成流物件。

(d)mapreplace:在map的基礎上封裝的改變方法,直接替換當前流中的物件,形成乙個新的物件流。

(e)filter:在map基礎上封裝的改變封裝,過濾掉當前流中不符合要求的物件,將之變為空流

(f)ignore:在filter基礎封裝的改變方法,忽略和當前值一樣的物件,將之變為空流

(g)skip:在bind基礎上封裝的改變方法,忽略當前流前n次的物件值,將之變為空流

(h)take:在bind基礎上封裝的改變方法,只區當前流中的前n次物件值,之後將流變為空(不是空流)。

(i)distinctuntilchanged:在bind基礎封裝的改變方法,當流中後一次的值和前一次的值不同的時候,才會返回當前值的流,否則返回空流(第一次預設被忽略)

(j)takeuntilblock:在bind基礎封裝的改變方法,取當前流的物件值,直到當前值滿足提供的block,就會將當前流變為空(不是空流)

(k)takewhileblock:在bind基礎封裝的改變方法,取當前流的物件值,直到當前值不滿足提供的block,就會將當前流變為空(不是空流)

(l)skipuntilblock:在bind基礎封裝的改變方法,忽略當前流的物件值(變為空流),直到當前值滿足提供的block。

(m)skipwhileblock:在bind基礎封裝的改變方法,忽略當前流的物件值(變為空流),直到當前值不滿足提供的block

(n)scanwithstart:reducewithindex:在bind基礎封裝的改變方法,用同樣的block執行每次流中的值,並將結果用於後一次執行當中,每次都把block執行後的值變成新的流中的物件。

(o)startwith:在contact基礎上封裝的多流之間的順序方法,在當前流的值流出之前,加入乙個初始值

(p)zip:打包多流,將多個流中的值包裝成乙個ractuple物件

(q)reduceeach:將流中的ractuple物件進行過濾,返回特定的衍生出的乙個值物件

3. racstream子類策略

racstream是racsignal和racsequence的父類,但是,racsignal和racsequence都自己實現了一套bind,zipwith和contât方法,所以在不同的子類中,racstream中定義的各種操作對應到各種子類,就會有不同的涵義。 

iOS RAC學習筆記(一) RACStream

racstream是racsignal和racsequence的父類,定義了一些流的操作方法。從名字上可以看出來,這個物件就像流一樣可以往任何乙個出口流,同時也可以給這個流設計一道道關卡,改變流 這裡的改變,既包括流的內容,也包括融合,也包括流的篩選等等 1.racstream簡介 a racstr...

學習筆記一

lisp 最重要的一種執行模式之一 repl that endless cycle of reading,evaluating,and printing is why it s called the read eval print loop or repl.第乙個lisp程式 在repl模式下執行l...

學習筆記 一

什麼是seo?搜尋引擎優化 search engine optimization,簡稱seo 是一種利用搜尋引擎的搜尋規則來提高目的 在有關搜尋引擎內的排名的方式。深刻理解是 通過seo這樣一套基於搜尋引擎的營銷思路,為 提供生態式的自我營銷解決方案,讓 在行業內佔據領先地位,從而獲得品牌收益。研究...