3

我想知道是否有一种方法可以在不列出 22 个选项的情况下区分隐式转换TupleN

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

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

4

1 回答 1

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)
}
于 2013-05-06T02:22:10.733 回答