2017-09-23 11 views
0

は私がこれに関する質問がいくつかありは、なぜ私は

def myFunc[A:ClassTag](seq: A*) = { 

println("The array representation is "+ Array[A](seq: _*)) } 

myFunc(Seq(1,2),Seq(3,4,5,6)) 
myFunc("a","b","c") 

コードのこの部分を理解しようとしています代わりにClassTag -ScalaのTypeTagを使用することはできません: -

  1. なぜすることができます」私はここでClassTagの代わりにTypeTagを使用しますか?
  2. 私はmyFuncという、いくつかの一般的なタイプの可変数に取り、ジェネリック型の可変数の配列を返すことを言うに修正アム(これは意味がありませんが、なぜコードはその方法を意味するのでしょうか?)

おかげ

答えて

2
  1. Arrayオブジェクトのapply方法は特にClassTagなくTypeTagを必要とするため。 Here's the documentation。配列はClassTagの情報しか必要とせず、私はそのクラスがTypeTagの前にあると信じています。

  2. コードは配列を返さず、単に出力します。配列を返すように変更した場合、いくつかのジェネリック型(呼び出しごとに1つの単一の型)の可変数のインスタンスを取り、その型の要素の配列を返します。