通用类型的Scala匹配

时间:2013-12-04 17:42:01

标签: scala generics pattern-matching

是否可以以某种方式匹配返回类型A,如果它是例如一个int,做一个返回int的计算。 请参阅以下示例:

def test[A](a: A):A = a match{
    case b: Int => b * 5
    case _ => a
}

错误消息:

type mismatch;  found   : Int  required: A

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以将返回更改为Any

def test[A](a: A):Any = a match{
  case b: Int => b * 5
  case _ => a
}

另一种选择是做instanceof

case b: Int => (b * 5).asInstanceOf[A]

答案 1 :(得分:0)

是:

def test(a : Int) = a * 5
def test[A](a : A) = a

Scala支持重载方法和基于类型的调度,因此在这种情况下,您不必诉诸模式匹配。