我想向Observable
类添加一个方法。到目前为止,我所做的是:
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{
^
怎么了?
您不需要extends Observable
。如果没有CCD_ 4,CCD_。
类rx。Observable采用了一个泛型类型参数,而您的代码没有提供该参数,因此出现了错误。
可能应该是extends Observable[Double]
。
manish是真的,因为Observable实际上不仅仅是一种特质,它是一种参数化的特质。这意味着你必须为它提供一个类型参数,以便将它变成一个你可以实际扩展的特征(比如在class Foo extends Observable[Double]
中,你将参数化的特征Observable
变成特征Observable[Double]
,然后用它扩展类Foo
zxswing已经说过了,您根本不需要扩展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以供参考。