1

型パラメーター化された型階層を作成した経験がある人はいますか? パッケージと静的オブジェクトの 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())
}

これが見事に悪い考えである理由はありますか? 注意すべき落とし穴などはありますか?

4

1 に答える 1