我想知道在这种情况下是否有减少样板代码的技巧:从类继承(让我们假设现实世界中有更多的构造函数参数)。
consul_command: "-join {{ ansible_groups['tag_consul_server'][0] }}"
答案 0 :(得分:1)
问题是,你真的需要扩展基类吗?您链接的特征方法可能足以满足您的需求。
也就是说,让Person
和Employee
同时使用方法name
,surname
,fullname
和header
来实现特征:
trait PersonLike {
def name: String
def surname: String
def fullname = name + " " + surname
def header = "Dear " + name
}
让课程扩展特性:
case class Person(name: String, surname: String) extends PersonLike
case class Employee(name: String, surname: String, role: String) extends PersonLike
案例类可能更好,但您可以使用普通类:
class Person2(val name: String, val surname: String) extends PersonLike
class Employee2(val name: String, val surname: String, val role: String) extends PersonLike
答案 1 :(得分:0)
在构造函数中使用val可创建新的公共成员。使用
简化它case class Person( name: String, surname: String ) {
def fullname = name + " " + surname
def header = "Dear " + name
}
class Employee( _name: String, _surname: String, val role: String )
extends Person( _name, _surname )
我还将Person改为case类,因此构造函数的参数成为公共字段。
如果您希望减少样板,我认为使用特征或其他技巧只需添加更多代码。所以,保持简单是我的建议。