2013-05-07 49 views
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 

但它无法编译。

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

回答

3

想到什么是定义一个同伴对象持恒:

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

不知道这是否就是你要找的东西,但我不认为你将能够获得没有使用反射的特性本身的价值。