Scala包含提供类型/值别名特征的对象
什么是在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
我正在为其他需要在范围内的案例对象做同样的事情。 这是一个明智的解决方案吗? 即是否有任何我需要注意的缺点/问题? 所有编译和浏览器测试页面都像预重构应用程序一样运行,但我不确定这是否是最佳方法。
这是一个明智的做法。 实际上它正在Scala库本身中应用。
只有两个可以想象的成员级别需要别名:类型(即特性和类)和值(即对象,包和值)。 你们都覆盖他们。
链接地址: http://www.djcxy.com/p/82693.html上一篇: Scala package objects with trait providing type/value aliases