我有一个variableObservable<BleHandler.BlePeripheral>上使用flatMap后得到类型array

let scannedPeripheral: Observable<BleHandler.BlePeripheral> = instance.bleScan()
            .flatMap{ Observable.from($0)}

但是现在我需要在另一个使用variablefunction中使用该BleHandler.BlePeripheral:
instance.bleEstablishConnection(scannedPeripheral: scannedPeripheral)

显然,它不起作用。有没有办法让我的Observable<BleHandler.BlePeripheral>变成BleHandler.BlePeripheral

最佳答案

它取决于函数是否返回值以及它返回哪种类型的值...

如果该函数无效,而您只是出于副作用而调用它,则:

let disposable = scannedPeripheral
    .subscribe(onNext: { instance.bleEstablishConnection(scannedPeripheral: $0) })

如果您的函数有副作用并返回一个Observable,则:
let returnValue = scannedPeripheral
    .flatMap { instance.bleEstablishConnection(scannedPeripheral: $0) }

如果该函数没有副作用,而您只是在调用它以将您的值转换为其他值,则:
let returnValue = scannedPeripheral
    .map { instance.bleEstablishConnection(scannedPeripheral: $0) }

基于函数的名称,这最后一个不太可能,但是为了完整起见,我将其放在此处。

关于ios - 如何从Observable <BleHandler.BlePeripheral>到BleHandler.BlePeripheral?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61024298/

10-11 19:49