具有提供类型/值别名的特征的Scala包对象
发布时间:2020-12-16 18:55:36 所属栏目:安全 来源:网络整理
导读:在 Scala中对对象进行别名的“正确”方法是什么? 例如,假设我需要在我的应用程序的各个部分中使用RoleGroup(它被分解为SBT子项目) trait RoleGroupobject RoleGroup { case object ADMIN extends RoleGroup case object MEMBER extends RoleGroup case obje
在
Scala中对对象进行别名的“正确”方法是什么?
例如,假设我需要在我的应用程序的各个部分中使用RoleGroup(它被分解为SBT子项目) trait RoleGroup object RoleGroup { case object ADMIN extends RoleGroup case object MEMBER extends RoleGroup case object PUBLIC extends RoleGroup } 由于我不想重复导入RoleGroup,我决定将RoleGroup特征和对象别名化为类型和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 我正在为需要在范围内的其他案例对象做同样的事情.这是一个明智的解决方案吗?即我需要注意哪些缺点/问题?所有编译和浏览器测试页面似乎都像预重构应用程序一样运行,但我不确定这是否是最好的方法. 解决方法
这是一种明智的做法.实际上
it’s being applied in the Scala library本身.
您只需要两个可想象的成员级别别名:类型(即特征和类)和值(即对象,包和值).你把它们都盖住了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |