如何编写一个函数来执行具有泛型类型的case语句



我想写一个这样的函数:

def genericCase[T]() : PartialFunction[Any, T] = { 
   case Wrapper(_, item: T) => item
   case Wrapper(item: T, _) => item
}

换句话说,我想要一种方法来重用不同类型的模式匹配的结构
编译器告诉我,由于类型擦除,case x: T将永远不会匹配。做这种通用案例陈述的替代方案是什么?我还尝试使用反射API中的类型作为函数的参数,但我们无法理解。

您只需要添加一个隐式ClassTag,它允许在泛型类上匹配:

import scala.reflect.ClassTag
def genericCase[T: ClassTag]() : PartialFunction[Any, T] = {
 case Wrapper(_, item: T) => item
 case Wrapper(item: T, _) => item
}

最新更新