Scala: Может ли абстрактный тип быть подтипом более чем одного другого типа?

Учитывая следующие определения Scala

abstract class C {
    type T1 <: { def m() : Int }
    type T2 <: { def n() : Int }
}

, есть ли способ определить третий тип в C, который может быть подтипом как T1, так и T2? Например.

    type T3 <: T1 & T2 // does not compile

Мне кажется, что (частично) причина, по которой это не будет работать так, как написано, заключается в том, что я не могу быть уверен, что это не приведет к незаконному ограничению (например, наследованию от двух классов). Таким образом, связанный с этим вопрос будет заключаться в том, могу ли я ограничить T1 и T2 так, чтобы это было законно, например требуя, чтобы они оба были чертами характера.

6
задан Eyvind 4 October 2011 в 09:22
поделиться