如何向 Observable 特征添加方法?

How to add a method to Observable trait?

我想在 Observable class 中添加一个方法。到目前为止我所做的是:

object Extension {

implicit class ObservableExtensions(obs: Observable[Double]) extends Observable{

    def fakeMethod (alpha: Double): Observable[Double] = {
      obs
        .map(v => v+alpha) 
      }

    }

 }  

但我得到:

Error: trait Observable takes type parameters
implicit class ObservableExtensions(obs: Observable[Double]) extends Observable{
                                                                   ^

怎么了?

class rx.Observable 采用泛型类型参数,您的代码不提供该参数,因此出现错误。

应该是extends Observable[Double].

您不需要 extends Observableimplicit 在没有 extends Observable 的情况下仍然有效。

manish 是真的,因为 Observable 实际上不仅仅是一个特征,它是一个参数化的特征。这意味着你必须为它提供一个类型参数,以便将它变成一个你可以实际扩展的特征(比如在 class Foo extends Observable[Double] 中,你将一个参数化特征 Observable 变成一个特征 Observable[Double] 并且然后用它扩展 class Foo

zxswing已经说了,你根本不需要extends Observable。做一个

import rx.lang.scala.Observable

object Extension {
  implicit class ObservableExtensions(obs: Observable[Double]) {
    def fakeMethod(alpha: Double): Observable[Double] = obs.map(_+alpha) 
  }
}  

import Extension._
Observable
    .just(1.0, 2.0, 3.0)
    .fakeMethod(10)
    .subscribe(println, println, println)

参考http://docs.scala-lang.org/overviews/core/implicit-classes.html