I’m new to Swift and ReactiveX. I feel difficult in understanding flatMap. In my tests to learn flatMap, I used range() and sequenceOf() respectively to create observables. But why the outputs are unexpectedly different as seen below:
import RxSwift
let sequenceInt = sequenceOf(1,2,3)
let rangeInt = range(1,3)
print( " ---- expects: [[1],[1,2],[1,2,3]] " )
print (" ---- hence: [1,1,2,1,2,3]")
print(" ---- sequenceOf misbehaving ----")
sequenceInt.flatMap { i in range( 1, i) }.subscribe { print($0) }
print(" ---- range behaves as expected ----")
rangeInt.flatMap { i in range( 1, i) }.subscribe { print($0) }
The outputs:
---- expects: [[1],[1,2],[1,2,3]]
---- hence: [1,1,2,1,2,3]
---- sequenceOf misbehaving ----
Next(1)
Next(1)
Next(1)
Next(2)
Next(2)
Next(3)
Completed
---- range behaves as expected ----
Next(1)
Next(1)
Next(2)
Next(1)
Next(2)
Next(3)
Completed