【发布时间】:2013-05-18 13:37:00
【问题描述】:
在 Scala 中给对象取别名的“正确”方法是什么?
例如,假设我在应用程序的各个部分(分为 SBT 子项目)中需要一个范围内的 RoleGroup
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
我对需要在范围内的其他案例对象做同样的事情。这是一个明智的解决方案吗?即我需要注意哪些缺点/问题?一切都编译好了,浏览器测试页面看起来就像在重构前的应用程序中一样运行,但不确定这是否是最好的方法。
【问题讨论】:
标签: scala object package type-alias