1

我想在类中添加一个方法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{
                                                                   ^

怎么了?

4

3 回答 3

4

你不需要extends Observableimplicit没有extends Observable.

于 2015-03-08T04:34:23.090 回答
3

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

应该是extends Observable[Double]

于 2015-03-07T17:48:37.240 回答
2

manish 是正确的,因为 Observable 实际上不仅仅是一个特征,它是一个参数化的特征。这意味着您必须为其提供类型参数才能将其转换为您可以实际扩展的特征(例如 in 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以供参考。

于 2015-03-08T10:20:23.877 回答