我是Scala的新手,我有一个关于复制案例类的最佳方法的问题,同时保留来自特征的数据.例如,假设我有以下内容:
trait Auditing {
var createTime: Timestamp = new Timestamp(System.currentTimeMillis)
}
case class User(val userName: String, val email: String) extends Auditing
val user = User("Joe", "joe@blah.com")
Run Code Online (Sandbox Code Playgroud)
然后我想创建一个更改了一个参数的新副本:
val user2 = user.copy(email = "joe@newemail.com")
Run Code Online (Sandbox Code Playgroud)
现在,在上面的示例中,属性createTime不会被复制,因为它未在User case类的构造函数中定义.所以我的问题是:假设将createTime移动到构造函数中不是一个选项,获取包含特征值的User对象副本的最佳方法是什么?
我正在使用Scala 2.9.1
提前致谢!乔
小智 6
您可以使用该行为覆盖复制方法.
case class User(val userName: String, val email: String) extends Auditing
{
def copy(userName = this.userName, email = this.email) {
val copiedUser = User(userName, email)
copiedUser.createTime = createTime
copiedUser
}
}
Run Code Online (Sandbox Code Playgroud)