2016-04-15 4 views
0

Возможно ли создать класс типа на основе параметра типа, наследуя параметр типа, как в приведенном ниже коде?scala: наследующий базовый класс от параметра типа

Я подозреваю, что это принципиально невозможно, так как это ограничение, как Scala функциональный язык ...

Но если это возможно, что я должен изменить в коде ниже ??

class MyInt[T : Numeric] extends T { 

} 

ответ

1

Невозможно. Вы можете расширить класс (включая черты), но вы не можете распространять тип, а T - это тип.

Даже если бы это было возможно, что тогда означало бы иметь MyInt[Int] (что является окончательным), или MyInt[List[String]] (что не является классом)? Это очень усложнилось для компилятора очень быстро.

+0

Так что это ограничение языка, и я бы предпочел общее ограничение для функционального программирования ??? – Pavel

+1

Это ограничение языка. Это не имеет никакого отношения к функциональному программированию. Я не знаю ни одного языка программирования, который может делать именно то, что вы просите. –

+0

@PavelOliynyk. Пересечение FP и подтипирование является небольшим и странным - в большинстве функциональных языков вопрос даже не имеет смысла. :) –

Смежные вопросы