我是 Swift 和 ReactiveX 的新手。我觉得理解 flatMap 很困难。在我学习 flatMap 的测试中,我分别使用 range() 和 sequenceOf() 来创建 observables。但是为什么输出出乎意料地不同,如下所示:
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) }
输出:
---- 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