Scala继承参数列表

Scala inheritance argument lists

如果我在scala中有一个基类,比如:

1
class Base(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 1, g: Int = 2) {}

我希望从这个基类继承多个类,但我希望将参数添加到该列表中。有没有一种有效的方法可以做到这一点,而不需要携带大量的基类参数列表?

为了使事情更复杂,基类可以或不可以重新定义可选参数(f和g)。假设:

1
class Child1(f: Int, h: Int, i: Int) extends Base(a,b,c,d,e,f)

当然会有点像

1
new Child1(a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8, i=9)

在斯卡拉有好的方法吗?(我考虑过通过定义参数的每个构造函数传递一个映射,但是没有编译时检查所需参数是否存在,它依赖于开发人员检查文档来查看它们应该包含什么。如果钥匙拼错了怎么办?等……)


如果一个建筑师的论据数目是如此大,既然你不想再重复这个论点了然后你应该考虑一下其他的模式。

你可以读到这个问题,并回答这个问题。有多少制造商的论据太多了?目标定向编程的本质在爪哇和斯卡拉都没有改变。

你也可以使用建筑物模式(使用许多设定方法,称为EDOCX1[…]方法),类型安全建筑物模式,有一些贸易除外,等等。

另一方面,在管状干旱的数量上,有(而且很可能是)一个限度,案例类别的建筑物参数,功能参数。22 Fields Limit in Case Class为什么Scala functions limited to 22 parameters?我不知道它在哪里,但SCALA的开发人员正在努力改变它。[SI-7296]Remove arity limit for case classes-scala从来没有,这是一种不好的服装,使一个功能,有很多论据。

最起码,您可以使用/定义管或单元格类别,以使结构简单,但它不帮助选择性参数。或者,如果你熟悉功能性语言的话,可能是当前的制造商。