class PasswordCaseClass(val password:String)
trait PasswordTrait { self:PasswordCaseClass =>
override def password = "blue"
}
val o = new PasswordCaseClass("flowers") with PasswordTrait
Run Code Online (Sandbox Code Playgroud)
是否有可能重写PasswordCaseClass的password与什么是在提供PasswordTrait?现在,我收到此错误:
e.scala:6: error: overriding value password in class PasswordCase
Class of type String;
method password in trait PasswordTrait of type => java.lang.String needs to be a stable,
immutable value
val o = new PasswordCaseClass("flowers") with PasswordTrait
^
one error found
Run Code Online (Sandbox Code Playgroud)
我希望能够有这样的东西:
class User(val password:String) {
}
trait EncryptedPassword { u:User =>
def password = SomeCriptographyLibrary.encrypt(u.password)
}
val u = new User("random_password") with EncryptedPassword
println(u.password) // see the encrypted version here
Run Code Online (Sandbox Code Playgroud)
这对我有用(经过一些修改):
trait PasswordLike {
val password: String
}
class PasswordCaseClass(val password:String) extends PasswordLike
trait PasswordTrait extends PasswordLike {
override val password: String = "blue"
}
Run Code Online (Sandbox Code Playgroud)
然后:
scala> val o = new PasswordCaseClass("flowers") with PasswordTrait
o: PasswordCaseClass with PasswordTrait = $anon$1@c2ccac
scala> o.password
res1: String = blue
Run Code Online (Sandbox Code Playgroud)