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
スコープ内にある必要がある他のケースオブジェクトについても同じことを行います。これは賢明な解決策ですか?すなわち、私が気づく必要がある欠点/問題はありますか?すべてがコンパイルされ、ブラウザのテストページはプリリファクタリングされたアプリケーションと同じように動作しますが、これが最善のアプローチかどうかはわかりません。
+興味深いことに、それはエイリアスレシピでなければなりません;-)オブジェクトのための特性/クラスとvalのタイプ。間違いなく、このアプローチで多くの輸入定例を減らすことができます – virtualeyes