3

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

但是不能编译。

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

4

1 回答 1

5

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

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

不确定这是否是您正在寻找的东西,但我认为您无法在不使用反射的情况下从特征本身中获取价值。

于 2013-05-07T07:36:07.400 回答