我想在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{
^
怎么了?
答案 0 :(得分:4)
您不需要extends Observable
。如果没有implicit
,extends Observable
仍可以使用。
答案 1 :(得分:3)
类rx.Observable采用泛型类型参数,代码不提供,因此出错。
应该是extends Observable[Double]
。
答案 2 :(得分:2)
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以供参考。