有没有办法区分案例类和元组?

时间:2013-04-17 19:15:34

标签: scala

我想知道是否有办法区分隐式转换而不列出TupleN的22个选项?

implicit def forTuple[A <: Product](a:A) = createForTuple(a)
implicit def forCaseClass[A](a:A) = createForCaseClass(a)

为案例类选择了forTuple方法,因为它们也扩展了产品。

1 个答案:

答案 0 :(得分:2)

您可以使用反射执行此操作,如下所示(如果您使用的是scala版本2.10):

import scala.reflect.runtime.universe._

def forEither[P <: Product : TypeTag](product: P) = {
  if (typeOf[P].typeSymbol.asClass.isCaseClass) forCaseClass(product)
  else forTuple(product)
}