ScalaでMyAlias[A]
のエイリアスとして定義することは可能ですかMyClass[String, A]
?たとえば、MyAlias[Int]
を参照しMap[String, Int]
ます。
質問する
4753 次
1 に答える
20
ではなく であるMap
ことに注意してください。trait
class
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 に答える