Что такое «правильный» способ псевдонима объекта в 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 признака и объекта в тип и 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
Я делаю то же самое для других объектов, которые должны быть в сфере видимости. Это разумное решение? т. е. существуют ли какие-либо недостатки/проблемы, о которых я должен знать? Все компилируемые и тестовые страницы браузера отображаются так же, как в предварительно рефакторизованном приложении, но я не уверен, что это лучший подход.
+1, интересный, это должен быть рецепт псевдонима, затем ;-) типы для признаков/классов и vals для объектов и др. Определенно можно уменьшить количество импортных шаблонов с таким подходом – virtualeyes