gpt4 book ai didi

scala - 我可以使用特征中的方法覆盖 scala 类方法吗?

转载 作者:行者123 更新时间:2023-12-03 22:55:55 25 4
gpt4 key购买 nike

class PasswordCaseClass(val password:String)
trait PasswordTrait { self:PasswordCaseClass =>
override def password = "blue"
}

val o = new PasswordCaseClass("flowers") with PasswordTrait

是否可以覆盖 PasswordCaseClasspassword使用 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

我希望能够有这样的事情:
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

最佳答案

您可以覆盖 defval ,但你不能反过来做。一个 val意味着保证——它的值(value)是稳定和不可变的——def才不是。

关于scala - 我可以使用特征中的方法覆盖 scala 类方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com