程序的许多方法都将List [Map [String,String]]作为参数。
我想通过定义诸如以下的类来使其正规化并使其更具可读性:
class MyClass extends List[Map[String, String]]
但是它会引发错误:
Illegal inheritance from sealed class 'List'
有适当的处理方法吗?
答案 0 :(得分:5)
您需要的东西称为类型别名:
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
答案 1 :(得分:1)
一种选择是使用composition rather than inheritance:
case class MyClass(value: List[Map[String, String]])
与使用类型别名相比,这更安全,因为您只能传递MyClass
的实例(其中期望MyClass
,而类型别名方法允许使用任何List[Map[String, String]]
)。它还可以帮助避免primitive obsession。你选择哪一个取决于你的使用情况。