Scala: как расширить неизменный список - PullRequest
0 голосов
/ 31 января 2019

Многие методы программы получают в качестве параметра List [Map [String, String]].

Я хотел бы формализовать его и сделать его более читаемым, определив такой класс, как:

class MyClass extends  List[Map[String, String]]

Однако выдает ошибку:

Illegal inheritance from sealed class 'List'

Есть ли правильный способ справиться с этим?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Один из вариантов - использовать композицию, а не наследование :

case class MyClass(value: List[Map[String, String]])

Это более безопасно для типов, чем использование псевдонима типа, поскольку вы можете передать только экземпляр MyClass где MyClass ожидается, тогда как подход с псевдонимом типа допускает любое List[Map[String, String]].Это также может помочь избежать примитивной одержимости .Какой из них вы выберете, зависит от вашего варианта использования.

0 голосов
/ 31 января 2019

То, что вам нужно, называется псевдонимом типа:

type MyClass = List[Map[String, String]]

https://alvinalexander.com/scala/scala-type-aliases-syntax-examples

Вы получаете ошибку, потому что пытаетесь расширить запечатанную черту, которая может быть расширена тольков том же файле, в котором определена черта.

https://alvinalexander.com/scala/scala-type-aliases-syntax-examples https://underscore.io/blog/posts/2015/06/02/everything-about-sealed.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...