用类型构造函数扩展类

问题描述

我正在尝试使用单个[A]类型参数和带有A [_]类型参数的子类扩展基类-像这样:

abstract class IsBase[A]

abstract class IsSub[A[_]] extends IsBase[A[_]] {
  type T
  def get(self: A[T]): T 
}

implicit def listIsSub[_T] = new IsSub[List] {
  type T = _T;
  def get(self: List[T]): T = self(0)
}
val list = List(1,2)

implicitly[IsSub[List]{ type T = Int }].get(list) // works fine
implicitly[IsBase[List[Int]]] // Could not find implicit value for parameter e

我知道一种实现此目的的方法就是将抽象类型T移至类型参数,例如:

abstract class IsSub1[A[_],T] extends IsBase[A[T]]

但是在我继续这条路线之前,我想先检查一下,没有一种直接的方法可以使它按原样进行。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)