I would like to add a method to the Observable
class. What I have done so far was:
object Extension {
implicit class ObservableExtensions(obs: Observable[Double]) extends Observable{
def fakeMethod (alpha: Double): Observable[Double] = {
obs
.map(v => v+alpha)
}
}
}
But I get:
Error: trait Observable takes type parameters
implicit class ObservableExtensions(obs: Observable[Double]) extends Observable{
^
What's wrong?
manish is true in that Observable actually isn't just a trait, it is a parametrized trait. That means you must supply it a type parameter in order to turn it into a trait you can actually extend (like in class Foo extends Observable[Double]
, where you turn a parametrized trait Observable
into a trait Observable[Double]
and then extend class Foo
with it.
zxswing has already said it, you don't need to extends Observable at all. Just do a
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)
see http://docs.scala-lang.org/overviews/core/implicit-classes.html for reference.