问题:如何在scala或Java中实现以下模式?
trait A
case class B[Base](...) extends A with Base
这在C ++中是允许的:
template <class Base>
class B : public Base, public A
这就是我想要这样做的原因:
我有两个抽象语法树:ComplexForm
和SimpleForm
我有一个列表类型:case class L[T](list : List[T]) extends Complex Form with T
现在,L[SimpleForm]
应extends SimpleForm with ComplexForm
但L[ComplexForm]
只应extend ComplexForm
我需要能够同时对所有L[T]
的匹配进行模式匹配,以避免重复。
答案 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]