为什么我不能使用TypeTag而不是ClassTag -Scala

时间:2017-09-23 00:02:38

标签: scala

我正在尝试理解这段代码

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")

我对此有几个问题: -

  1. 为什么我不能在这里使用TypeTag而不是ClassTag?
  2. 我是否正确地说myFunc接受一些泛型类型的可变数量并返回一个可变数量的泛型类型的数组(这没有意义,但为什么代码意味着这种方式?)
  3. 由于

1 个答案:

答案 0 :(得分:2)

  1. 因为Array对象的apply方法明确要求ClassTag而不是TypeTagHere's the documentation。数组只需要ClassTag信息,我相信该类早于TypeTag

  2. 您的代码不会返回数组,只会打印它。如果你更改它以返回数组,你可以说它接受了一些泛型类型的可变数量的实例(每次调用一个单一类型),并返回该类型的元素数组。