如何从泛型observable订阅PublishRelay?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从泛型observable订阅PublishRelay?相关的知识,希望对你有一定的参考价值。

Kotlin代码:

fun <T> Observable<T>.circuitBreaker(): Observable<T> {
  val relay = PublishRelay.create<T>()
  this.subscribe(relay)
  return relay.toFlowable(BackpressureStrategy.LATEST).toObservable()
}

上面是一个Kotlin代码,我试图将其转换为Swift。但是,我正面临一个错误,说不能将'PublishRelay'类型的值转换为预期的参数类型'(Event <_>) - > Void'

SWIFT代码:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishRelay<T>()
    self.subscribe(relay)
    return relay.asObservable()
  }
}

任何帮助,将不胜感激。

答案

你不能绑定和ObservableRelay。参见相关讨论here

另一答案

我用下面的方法做到了:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishSubject<T>()
    _ = self.subscribe { (event: Event<Element>) in
      if let event = event as? Event<T> { relay.on(event) }
    }
    return relay.asObservable()
  }
}

以上是关于如何从泛型observable订阅PublishRelay?的主要内容,如果未能解决你的问题,请参考以下文章

如何从泛型函数返回 null? [复制]

如何获取和使用从泛型推断的类型

如何从泛型函数中记录参数[重复]

如何构造从泛型树到 a-b 树的继承

Kotlin:从泛型集合到泛型数组

如何在 Spring Boot 中从泛型参数(与任何类无关)中获取值