由特定(case?)类扩展的特征匹配的隐式方法

时间:2018-03-09 02:44:46

标签: scala implicits

我的案例类BFileAFile都扩展了特征File。案例类BDirADir都扩展了特征Dir。这些类被实例化为它们的特征类型。

我正在尝试编写隐式move方法(位于A/BFileA/BDir类之外的对象上),这些方法针对A/BFile&的每个组合重载。 A/BDir

我不确定如何执行此操作,以便根据文件和目录的特定类隐式使用不同的.move方法。这甚至可能吗?

我不希望在类中实现这些方法的原因是因为它需要引入额外的依赖项来使用类;我无法始终提供这些依赖项。

我也不想因为我试图遵循依赖性倒置原则而只依赖于课程。

编辑:我想我正在寻找以下或一些等价物:

trait File {
  ...
  def move(directory: the class implementing this that extends Dir): File
  def copy(directory: the class implementing this that extends Dir): File
}

trait Dir {
  ...
}

0 个答案:

没有答案