ブログを見て場所がわからない
2092 ワード
1 flatMap関数
mapは変換を行う際に『昇次元』が起こりやすい.すなわち、変換後、1つのシーケンスから1つのシーケンスのシーケンスに変化する.『昇維』って何?集合の中で私たちはこのような例を挙げることができて、私は1つの友达のリスト[p 1,p 2,p 3]を持っていて、それではもし私の友达のリストを取得するならば、このようにすることができます:
**Swift **
結果として[[p 1−1,p 1−2,p 1−3],[p 2−1],[p 3−1,p 3−2]]となり,これが友人の友人リストのリストとなった.これが『昇維』の例です.
Swiftでは、map後のnil結果をflatMapでフィルタできます.Rxでは、flatMapは1つのシーケンスを1つのシーケンスに変換し、その後、このシーケンスを「フラット」に1つのシーケンスに変換することができる.
** RxSwift **
2 combineLatest
2つのイベントキューが存在し、同時に傍受する必要がある場合、combineLatestは新しいイベントが発生するたびに、各キューの最新の要素をマージします.RxSwift
3 zip
zip人はその名の通り、2つのキューを圧縮するために使用されますが、2つのキューの要素が1つずつ対応して揃うまで待ってからマージされます.
mapは変換を行う際に『昇次元』が起こりやすい.すなわち、変換後、1つのシーケンスから1つのシーケンスのシーケンスに変化する.『昇維』って何?集合の中で私たちはこのような例を挙げることができて、私は1つの友达のリスト[p 1,p 2,p 3]を持っていて、それではもし私の友达のリストを取得するならば、このようにすることができます:
**Swift **
myFriends.map { $0.getFriends() }
結果として[[p 1−1,p 1−2,p 1−3],[p 2−1],[p 3−1,p 3−2]]となり,これが友人の友人リストのリストとなった.これが『昇維』の例です.
Swiftでは、map後のnil結果をflatMapでフィルタできます.Rxでは、flatMapは1つのシーケンスを1つのシーケンスに変換し、その後、このシーケンスを「フラット」に1つのシーケンスに変換することができる.
** RxSwift **
example("flatMap") {
let sequenceInt = sequenceOf(1, 2, 3)
let sequenceString = sequenceOf("A", "B", "--")
sequenceInt
.flatMap { int in
sequenceString
}
.subscribe {
print($0)
}
}
--- flatMap example ---
Next(A)
Next(B)
Next(--)
Next(A)
Next(B)
Next(--)
Next(A)
Next(B)
Next(--)
Completed
2 combineLatest
2つのイベントキューが存在し、同時に傍受する必要がある場合、combineLatestは新しいイベントが発生するたびに、各キューの最新の要素をマージします.RxSwift
example("combineLatest 1") {
let intOb1 = PublishSubject()
let intOb2 = PublishSubject()
combineLatest(intOb1, intOb2) {
"\($0) \($1)"
}
.subscribe {
print($0)
}
intOb1.on(.Next("A"))
intOb2.on(.Next(1))
intOb1.on(.Next("B"))
intOb2.on(.Next(2))
}
--- combineLatest 1 example ---
Next(A 1)
Next(B 1)
Next(B 2)
3 zip
zip人はその名の通り、2つのキューを圧縮するために使用されますが、2つのキューの要素が1つずつ対応して揃うまで待ってからマージされます.
Swift
example("zip 1") {
let intOb1 = PublishSubject()
let intOb2 = PublishSubject()
zip(intOb1, intOb2) {
"\($0) \($1)"
}
.subscribe {
print($0)
}
intOb1.on(.Next("A"))
intOb2.on(.Next(1))
intOb1.on(.Next("B"))
intOb1.on(.Next("C"))
intOb2.on(.Next(2))
}
--- zip 1 example ---
Next(A 1)
Next(B 2)