在 Scala 中给对象起别名的“正确”方法是什么?
例如,假设我的应用程序的各个部分都需要一个 RoleGroup(它被分解为 SBT 子项目)
trait RoleGroup
object RoleGroup {
case object ADMIN extends RoleGroup
case object MEMBER extends RoleGroup
case object PUBLIC extends RoleGroup
}
由于我不想重复导入 RoleGroup,我决定将 RoleGroup trait 和 object 别名为 type 和 val 对应项,如下所示:
package com.developer
package controller
trait ControllerBase {
type RoleGroup = controller.RoleGroup
val RoleGroup = controller.RoleGroup
...
}
然后子项目包对象可以扩展助手特征以免费获取导入:
package com.client
package object member
extends com.developer.controller.ControllerBase
我对需要在范围内的其他案例对象做同样的事情。这是一个明智的解决方案吗?即有什么我需要注意的缺点/问题吗?一切都编译并且浏览器测试页面看起来就像在重构前的应用程序中一样运行,但不确定这是否是最好的方法。