1
我在編寫一些RxSwift實用程序函數時遇到了問題。我想創建一個效用函數將多個Observable<Bool>
流映射到單個Observable<Bool>
流,該流將檢查每個源流是否爲true
。它可以通過下面的代碼來實現。RxSwift擴展可觀察的泛型類型問題
var v1 = Variable<Bool>(true)
var v2 = Variable<Bool>(false)
Observable.combineLatest(v1.asObservable(), v2.asObservable()) { (a, b) -> Bool in
return a && b
}
.distinctUntilChanged()
.subscribe(onNext: { v in
print(">> \(v)")
})
v1.value = true
// will print
// >> false
// >> true
所以我寫了下面的代碼。
但它不會編譯錯誤Declared closure result 'Bool' is incompatible with contextual type '_'
。試圖修復,但無法修復。
泛型類型系統可能出了問題,但我無法弄清楚。幫助將不勝感激。
====
編輯
由於@TomaszPikć回答,我可以把它編譯使用Observable<Bool>.combineLatest
。但every
函數只能用Observable<Bool>
調用,如下所示。
Observable<Bool>.every(r1.asObservable(), r2.asObservable())
.subscribe(onNext: { (e:Bool) in
print(">> \(e)")
})
我怎樣才能改變它使用Observable.every
,而不是像Observable<Bool>.every
當我使用Observable.combineLatest
?
謝謝回答,但如何能使其可用於'Observable.every'代替'可觀察 .every'? –
redism