ScalaでMyAlias[A]のエイリアスとして定義することは可能ですかMyClass[String, A]?たとえば、MyAlias[Int]を参照しMap[String, Int]ます。
4753 次
1 に答える
20
ではなく であるMapことに注意してください。traitclass
typeキーワードを使用してエイリアスを作成することもできます:
type StringMap[A] = Map[String, A]
val myMap: StringMap[Int] = Map("a" -> 1)
これは、、または定義のスコープ内class(objectおよびtrait任意のメソッドまたは式のスコープ内) で実行できます。
純粋に実装コードの便宜上、エイリアスをその宣言スコープに対してプライベートにしたい場合があります。タイプを一般的に使用できるようにしたい場合は、パッケージ オブジェクトが役立ちます。
package object mypackage {
type StringMap[A] = Map[String, A]
}
Mapはクラスではなくトレイト (および関連するコンパニオン オブジェクト) であるため、インスタンスを作成するために直接使用することはできません。
val myMap = new StringMap[Int]
// error: trait Map is abstract; cannot be instantiated
ただし、クラスにエイリアスを設定した場合でも、次のnewキーワードを使用できます。
type StringHashMap[A] = HashMap[String, A]
val myMap = new StringHashMap[Int]
于 2012-05-31T08:59:36.490 に答える