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
スコープ内にある必要がある他のケースオブジェクトについても同じことをしています。これは賢明な解決策ですか?つまり、知っておく必要がある欠点/問題はありますか? すべてがコンパイルされ、ブラウザのテスト ページはリファクタリング済みのアプリケーションと同じように動作するように見えますが、これが最善の方法かどうかはわかりません。