型パラメーター化された型階層を作成した経験がある人はいますか? パッケージと静的オブジェクトの scala の疑似統合の結果として、これが実現可能であると確信しています。
int
私が念頭に置いている特定の使用例は、アプリケーション フレームワーク上で ID タイプをパラメータ化することです。これにより、 / long
/ java.util.UUID
/ BSONId
/whateverの選択を使用できます。大まかな例として考えてみましょう:
package foolib.generic
trait GenEntity[I] { def id: I }
trait GenRepository[I] { def getById(id: I): GenEntity[I] }
trait FooTaxonomy[I] {
type Entity = GenEntity[I]
type Repository = GenRepository[I]
object subpackage extends generic.subpackage.SubpackageTaxonomy[I]
}
次に、プロジェクトで使用する階層を次のように構成します。
package object myprj {
object foolib extends foolib.generic.FooTaxonomy[java.util.UUID]
// Whee!
val someEntity = new myprj.foolib.Entity(java.util.UUID.randomUUID())
}
これが見事に悪い考えである理由はありますか? 注意すべき落とし穴などはありますか?