给定变量x of type X
&lt ;: Any,X和模式匹配的类型标记恢复x是Array[_]
我想用一个想要类型标记的函数映射该数组对于元素。
我该怎么做,即如果我知道类型标签是数组的类型标签,我怎样在运行时为它的类型参数获取类型标签?
在typeOf[X].tpe
上匹配获取参数类型,但我不知道如何从那里构造类型标记。
答案 0 :(得分:0)
你可以让编译器提供它,但它必须是它仍然知道的地方(所以你不能使用它,如果你模式匹配Any以找出它是什么类型的东西 - 这发生在运行时类型被删除的地方):
val tag = implicitly[TypeTag[X]]
或者,或许更清楚,作为您使用它的方法的隐式参数
def myOp[X <: Any](arr: Array[X])(implicit tag: TypeTag[X]) = ???