39. TRANSFORMING
--- Example of: Variable and map ---
one
twelve
one million two hundred thirty-four thousand five hundred sixty-seven
exampleOf("Variable and map") {
let disposeBag = DisposeBag()
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = .SpellOutStyle
let number = Variable(1)
number.asObservable()
.map { numberFormatter.stringFromNumber($0)! }
.subscribeNext { print($0) }
.addDisposableTo(disposeBag)
number.value = 12
number.value = 1_234_567
}
40. TRANSFORMING
--- Example of: flatMap ---
Scott
Lori
Eric
exampleOf("flatMap") {
let disposeBag = DisposeBag()
struct Person {
var name: Variable<String>
}
let scott = Person(name: Variable("Scott"))
let lori = Person(name: Variable("Lori"))
let person = Variable(scott)
person.asObservable()
.flatMap {
$0.name.asObservable()
}
.subscribeNext {
print($0)
}
.addDisposableTo(disposeBag)
person.value = lori
scott.name.value = "Eric"
}
41. TRANSFORMING
--- Example of: flatMapLatest ---
Scott
Lori
exampleOf("flatMap") {
let disposeBag = DisposeBag()
struct Person {
var name: Variable<String>
}
let scott = Person(name: Variable("Scott"))
let lori = Person(name: Variable("Lori"))
let person = Variable(scott)
person.asObservable()
.flatMapLatest {
$0.name.asObservable()
}
.subscribeNext {
print($0)
}
.addDisposableTo(disposeBag)
person.value = lori
scott.name.value = "Eric"
}
51. BENEFITS
1. Write less, do more
2. Avoid mutable state errors
3. Learn once, apply everywhere
4. Mix in or go all in
5. “It reads almost like a paragraph”
6. Easy to test and heavily tested