Ios 联合收割机操作员?
我正在寻找一个与运算符相反的运算符:Ios 联合收割机操作员?,ios,swift,combine,Ios,Swift,Combine,我正在寻找一个与运算符相反的运算符: 允许您从一个发射值映射到多个发射值,并在流中发射它们。例如,如果流中有元素[1,2,3],我想将其转换为一个流,该流发出1,然后2,然后3 不会更改流的完成状态。诚然,这个uncollect操作符不会与collect完全相反,因为collect等待流完成。使用uncollect时,它应该只在流未完成时处理结果,而不尝试完成/取消完成流 例如,我想这就是未收集的操作符的工作方式: func fibonacci(_ number: Int) -> An
- 允许您从一个发射值映射到多个发射值,并在流中发射它们。例如,如果流中有元素
,我想将其转换为一个流,该流发出[1,2,3]
,然后1
,然后2
3
- 不会更改流的完成状态。诚然,这个
操作符不会与uncollect
完全相反,因为collect
等待流完成。使用collect
时,它应该只在流未完成时处理结果,而不尝试完成/取消完成流uncollect
未收集的操作符的工作方式:
func fibonacci(_ number: Int) -> AnyPublisher<Int, Never> {
Future { ... }.eraseToAnyPublisher()
}
let serverEventStream: AnyPublisher<[Int], Never> = ...
serverEventStream // AnyPublisher<[Int], Never> // Ex. 2 values: `[12, 24]`, `[1, 10, 50]`
.uncollect { $0 } // AnyPublisher<Int, Never> // Ex. 5 values: `12`, `24`, `1`, `10`, `50`
.flatMap { fibonacci($0) } // AnyPublisher<Int, Never> // Ex. 5 values: `144`, `46368`, `1`, `55`, `12586269025`
.sink { print($0) }
您可以将flatMap
与新发布者一起使用
[1,2,3,4,5,6].publisher
.collect()
.flatMap { $0.publisher }
.sink { print($0) }
1
2
3
4
5
六,
您可以将flatMap
与新发布者一起使用
[1,2,3,4,5,6].publisher
.collect()
.flatMap { $0.publisher }
.sink { print($0) }
1
2
3
4
5
六,
这正是我想要的。原来是我。你可能需要flatMap(maxPublishers:1){…}
,这取决于内部发布程序的工作方式。这正是我要找的。结果是I。根据内部发布服务器的工作方式,您可能需要flatMap(maxpublisher:1){…}
。