相关类型后代的隐式解决方案,以避免进口税

时间:2014-12-17 11:41:00

标签: scala implicits

class JavaRxObservable
class MyObservable extends JavaRxObservable

object MyObservable {
  implicit class ObservablePimp(o: JavaRxObservable) {
    def flatMapPimp: JavaRxObservable = ... 
  }
}

def api: JavaRxObservable = new MyObservable

api.flatMapPimp // is this possible without import statement ?

请注意,无法为第三方类型 JavaRxObservable创建配套对象。并且因为我的api方法必须返回JavaRxObservable 类型,因为它具有组合性质(MyObservable#map会返回JavaRxObservable),这是一个主要的缺点API设计,因为你强迫人们阅读文档,他们必须导入使用你的API的东西。如果包装对象的声明是第三方使用的API,那么甚至包装对象中的声明都没有帮助。

0 个答案:

没有答案