Scala:class [T]扩展T?

时间:2016-01-30 09:55:35

标签: java scala generics inheritance

问题:如何在scala或Java中实现以下模式?

trait A
case class B[Base](...) extends A with Base

这在C ++中是允许的:

template <class Base>
class B : public Base, public A

这就是我想要这样做的原因:

我有两个抽象语法树:ComplexFormSimpleForm

我有一个列表类型:case class L[T](list : List[T]) extends Complex Form with T

现在,L[SimpleForm]extends SimpleForm with ComplexFormL[ComplexForm]只应extend ComplexForm

我需要能够同时对所有L[T]的匹配进行模式匹配,以避免重复。

1 个答案:

答案 0 :(得分:1)

或许这样的事情?

fatal error: linux/netfilter/xt_mark.h: No such file or directory

你可以像这样模式匹配:

trait Form
trait SimpleForm extends Form
trait ComplexForm extends Form
trait ListForm[+T <: Form] extends ComplexForm {
   def l: List[T]
}


case class SimpleList(val l: List[SimpleForm]) extends SimpleForm with ListForm[SimpleForm]
case class ComplexList(val l: List[ComplexForm]) extends ListForm[ComplexForm]