は、なぜ私は、次のことが可能です。エイリアシング適切な型(?なぜそれがコンパイルされます)
class A
type M[_] = A
私は、私は1つの型パラメータを期待するだけエイリアスタイプ、例えばList[_]
ことができますが、それ期待しますプレーンなクラスでも動作します。
def foo(m: M[_]) = m
と間違ったパラメータでそれを呼び出す:
scala> foo("a")
<console>:15: error: type mismatch;
found : String("a")
required: M[_]
(which expands to) A[]
foo("a")
が、私はこのようなエラーを取得し、私はメソッドを作成する場合
。 A[]
の意味は?この説明する方法を、さらに行く
:
scala> type M[_, _] = A
<console>:12: error: _ is already defined as type _
type M[_, _] = A
は私が私のエイリアスの右側に置くことはパラメータ化タイプになることを保証する方法はありますか?
2番目の質問には、 'クラスA [T <:AnyRef、U <:AnyVal]'と 'タイプM = A [_、_]'がありますか? – Samar
@Samarこれは非常に異なる状況です。 –