Вопрос: Как я мог добиться следующего шаблона в scala или Java?Scala: класс [T] расширяет T?
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
мне нужно, чтобы иметь возможность шаблон матча Agains все L[T]
сразу, чтобы избежать дублирования.
@cchantep, я, очевидно, пытался: 'случай класса O [T] (список: Список [T]) продолжается T' и ошибка «(1) T не имеет конструктора; (2) требуется тип класса, но T found« –
generics работает не так, как C++-шаблоны, см. Http://stackoverflow.com/questions/18347167/does-scala-provide-anything- as-c-templates – 4e6
Мне не совсем ясно, чего вы пытаетесь достичь, смешивая в произвольном 'T'. Почему оболочка 'L [T]' также должна быть 'T'? –