Fre*_*ind 3 scala constants traits
我RequireLogin
用常量定义了一个特征:
trait RequireLogin {
val message = "you should login"
if(sessionUser.isEmpty) {
Global.error(message)
throw new RedirectException("/login", message);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的测试中,我创建了一个具有此特征的对象,并测试 是否Global.error()
等于RequireLogin.message
。
try {
new Object with RequireLogin
} catch {
case _: RedirectException =>
}
Global.error should be === RequireLogin.message // !!! can't be compiled
Run Code Online (Sandbox Code Playgroud)
但无法编译。
有什么方法可以从特征中获取常数吗?或者如何重构我的代码以使其更好?
我想到的是定义一个保持常量的伴随对象:
object RequireLogin {
val message = "you should login"
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否是您正在寻找的,但我认为如果不使用反射,您将无法从特征本身中获取价值。