1

Map の 2 番目の型パラメーターのマニフェストを取得するにはどうすればよいですか?

たとえば、次の関数:

  def asMap[T <: AnyRef]()(implicit m : Manifest[T]) : Map[Int, T] = {
    println(m) // Nothing
    ...
  }

次のように呼び出されます。

val map : Map[Int,String] = asMap()

暗黙の m パラメーターは 、対応する配列にバインドされます。Nothing

  def asArray[T <: AnyRef]()(implicit m : Manifest[T]) : Array[T] = {
    println(m)  // java.lang.String
    ...
  }

次のように呼び出します。

val arr : Array[String] = asArray()

暗黙の m-parameter はにバインドされていますjava.lang.String-予想どおり

、誰か説明してもらえますか?

4

2 に答える 2

2

あなたが何をしているのかよくわかりません - 引数として Map がない場合、どうすればパラメーターを取得できますか?

def getManifest[A,B: Manifest](map: Map[A,B]) = manifest[B]

val map = Map(1 -> "one")
getManifest(map) //Manifest[java.lang.String] = java.lang.String
于 2012-04-24T21:23:28.113 に答える
2

Mapは 2 番目のパラメーター:Map[A, B+]で共変であるのに対しArray、その型: では不変であるためのようですArray[T]

于 2012-04-24T21:05:41.837 に答える