はじめに
オペレータの使い方まとめ。備忘録。
ToArray
let disposeBag = DisposeBag()
Observable.of(1,2,3,4).toArray().subscribe {
print($0)
}.disposed(by: disposeBag)
// 出力
success([1, 2, 3, 4])
Map
let disposeBag = DisposeBag()
Observable.of(1,2,3,4).map({$0 * 2}).subscribe {
print($0)
}.disposed(by: disposeBag)
// 出力
next(2)
next(4)
next(6)
next(8)
completed
FlatMap
let disposeBag = DisposeBag()
struct Subject {
let like: BehaviorRelay<Bool>
}
let english = Subject(like: BehaviorRelay(value: true))
let math = Subject(like: BehaviorRelay(value: false))
let subject = PublishSubject<Subject>()
subject.asObservable()
.flatMap {
$0.like.asObservable()
}
.subscribe {
print($0)
}
.disposed(by: disposeBag)
subject.onNext(english)
english.like.accept(false)
subject.onNext(math)
english.like.accept(false)
// 出力
next(true)
next(false)
next(false)
next(false)
FlatMapLatest
let disposeBag = DisposeBag()
// 構造体
struct Subject {
let like: BehaviorRelay<Bool>
}
let english = Subject(like: BehaviorRelay(value: true))
let math = Subject(like: BehaviorRelay(value: false))
let subject = PublishSubject<Subject>()
subject.asObservable()
.flatMapLatest {
$0.like.asObservable()
}
.subscribe {
print($0)
}
.disposed(by: disposeBag)
subject.onNext(english)
english.like.accept(false)
subject.onNext(math)
english.like.accept(false)
// 出力
next(true)
next(false)
next(false)
終わりに
随時更新