如何从特质中获得恒定值?

时间:2013-05-07 07:28:49

标签: scala constants traits

我使用常量定义了特征RequireLogin

trait RequireLogin {
    val message = "you should login"
    if(sessionUser.isEmpty) {
        Global.error(message)
        throw new RedirectException("/login", message);
    }
}

现在在我的测试中,我创建了一个具有此特征的对象,并测试Global.error()是否等于RequireLogin.message

try {
    new Object with RequireLogin
} catch {
    case _: RedirectException =>
}
Global.error should be === RequireLogin.message // !!! can't be compiled

但它无法编译。

有没有办法从特质中获得常数?或者如何重构我的代码以使其更好?

1 个答案:

答案 0 :(得分:4)

我们想到的是定义一个包含常量的伴随对象:

object RequireLogin {
    val message = "you should login"
}

不确定这是否是您正在寻找的,但我认为如果不使用反射,您将无法从特征中获取价值。