在開始發出訂閱訊號前,按照後進先出原則,發出指定的訊號
func rx_operators_startwith().adddisposableto(disposebag)
// 這是拆解開來寫,下面是組合 示範
// 觀察量序列 of是固定元素的觀察序列
// observable.of("**","**","吊帶","短裙")
//
// // startwith 訂閱前新增
// .startwith("都穿上")
// .startwith("換一下衣服")
// .startwith("老闆娘","把妹妹們都喊出來")
//
// // 訂閱
// .subscribe .adddisposableto(disposebag)
}
列印結果
next
(老闆娘)
next
(把妹妹們都喊出來)
next
(換一下衣服)
next
(都穿上)
next
(**)
next
(**)
next
(吊帶)
next
(短裙)
completed
用乙個 訂閱者,同時訂閱多個 觀察量序列的 訊號
將多個觀察量序列(observable)比如a,b,c 合併為乙個觀察者(observe)序列s,當a、b、c任何乙個序列發出訊號的時候,s裡,都接收個訊號
func rx_operators_merge()}}
let bobservable = }}
let cobservable = }}
// 合成
observable.from([aobservable("a蘿莉"),bobservable("b御姐"),cobservable("c**")]
) // 關鍵** 合成
.merge()
// 訂閱
.subscribe(onnext:)
.adddisposableto(disposebag)
}
列印:
a蘿莉b御姐
c**a 結束
b 結束
c 結束
壓縮合成,最多合成8個觀察量序列,合成的幾個 序列中,必須多個序列的同一次 訊號傳送必須有值,否則不傳送
func rx_operators_zip())
let bobservable = observable.create()
let cobservable = observable.create()
//壓縮 合成
observable.zip(aobservable, bobservable, cobservable) .subscribe (onnext:).adddisposableto(disposebag)
}
列印結果:****超短裙
合成觀察量序列,多8個,只要其中乙個觀察量序列 發出訊號,那麼這個合成序列就會採集所有序列目前最新的訊號,合起來傳送一次。
func rx_operators_combinelatest().subscribe.adddisposableto(disposebag)
}
列印結果:
next
(01正義)
next
(小朋友1正義)
next
(小朋友2正義)
next
(小朋友2慾望)
next
(蘿莉2慾望)
next
(蘿莉3慾望)
next
(蘿莉3**)
next
(蘿莉白絲**)
next
(蘿莉白絲高尚)
completed
你會發現列印結果找不出來規律,是因為3個of傳送訊號不是序列的。你可以自己create幾個序列試試哦。
訂閱 2維 觀察量序列,也就是 觀察量序列裡面 傳送的訊號也是觀察量序列,將其轉換為乙個可以切換訂閱序列的一維序列,當切換到新的序列的時候,舊訂閱將取消
func rx_operators_switchlatest()
let bobservable = observable.create
}let cobservable = observable>.create
observable.of(aobservable,bobservable)
.switchlatest()
.subscribe
.adddisposableto(disposebag)
print("——————————————1111——————————————————————")
cobservable.switchlatest()
.subscribe
.adddisposableto(disposebag)
print("——————————————2222——————————————————————")
let vab = variable(aobservable)
vab.asobservable()
.switchlatest()
.subscribe(onnext:)
.adddisposableto(disposebag)
// 切換到b
vab.value = bobservable
// 切換到a
vab.value = aobservable
print("———————————3333—————————————————————————")
let asubject = publishsubject()
let bsubject = publishsubject()
let variab = variable(asubject)
variab.asobservable()
.switchlatest()
.subscribe
.adddisposableto(disposebag)
asubject.onnext("萌萌噠小蘿莉")
bsubject.onnext("小蘋果兒")
//切換訂閱
variab.value = bsubject
bsubject.onnext("皮皮蝦我們走")
asubject.onnext("怪蜀黍")
bsubject.onnext("哈哈哈")
//再切換一次
variab.value = asubject
asubject.onnext("~~~!!!@@@")
asubject.onnext("****")
bsubject.onnext("看看結果")
}
列印結果:
next
(女僕)
next
(誘人)
next
(蘿莉)
next
(音清體柔易推倒)
取消completed
——————————————1111——————————————————————
next
(女僕)
next
(誘人)
next
(蘿莉)
next
(音清體柔易推倒)
取消completed
——————————————2222——————————————————————
女僕誘人
蘿莉音清體柔易推倒
取消女僕
誘人———————————3333—————————————————————————
next
(萌萌噠小蘿莉)
next
(皮皮蝦我們走)
next
(哈哈哈)
next
(~~~!!!@@@)
next
(****)
結構型 3 組合模式
1.模式機動 資料夾 容器 container 檔案 葉子 leaf 如何將容器物件和葉子物件進行遞迴組合,使得使用者在使用時無須對它們進行區分,可以一致地對待容器物件和葉子物件?組合模式 2.模式定義 3.模式結構 組合模式包含如下角色 模式結構 檔案系統組合模式結構圖 透明組合模式 水果盤 例項...
No3 組合查詢 機房收費
怎麼說呢,之前的組合查詢,現在想起來都是很痛心的,剛開始我單蠢的想要用case語句來查,於是我硬著頭皮往下寫,結果呢,乙個條件還沒有查出來的時候,我的case語句就用了20多個了,於是我果斷放棄了這個方法,看這麼多的case,我還是很頭暈的,實現乙個功能重複使用乙個 數量超過一定的界限那就是很有問題...
1033 遞迴3(組合 判斷素數)
時間限制 1 sec 記憶體限制 128 mb 提交 1015 解決 584 提交 狀態 討論版 題目描述 題意 已知 n 個整數 x1,x2,xn,以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19 時...