Я хочу сделать что-то вродепростирающиеся коллекции Scala для конкретного типа элемента
class Pack extends collection.immutable.List[Dog]{
def pullSled() = //...
}
Но компилятор Scala говорит мне
illegal inheritance from sealed class List
Это было бы тривиально сделать в Java, но я думаю, это что-то ключевое, что мне не хватает.
Мотивы:
Я хочу, чтобы иметь возможность использовать все методы базового класса
(new Pack()).contains(snoopy)
Я хочу, чтобы иметь возможность продлить его, либо непосредственно, либо с Mixins
new Pack() with Driver
Я бы хотел (а) просто изменить базовый тип коллекции (например, для переключения на набор)
Спасибо!
Хороший ответ! Часть моей мотивации для этого - читаемость. Я все еще хочу использовать все полезные методы коллекции, но все равно могу обходить простые непаритируемые объекты. В реальной жизни я хочу сделать это для гораздо более громоздких классов, чем собак. Еще раз спасибо! – user833970
@ user833970 Рад, что это помогает. Кстати, простой псевдоним типа может быть и опцией. – gzm0
Проблема с ailiasing заключается в том, что я по-прежнему не могу расширить свой специализированный класс позже. – user833970