Scala通用方法。接受任何数字值序列

时间:2017-11-21 15:21:55

标签: scala types

我可以在Scala中创建一个函数接受向量和列表而不指定具体的类型值吗?

我现在有这样的事情:

def testFunc[V <: Seq[Int]](x: V) = x

testFunc(List(1, 3)) // res0: List[Int] = List(1, 3)
testFunc(Vector(1, 3)) // res1: scala.collection.immutable.Vector[Int] = Vector(1, 3)

如何修改此功能,以便它还接受DoubleInt值?

1 个答案:

答案 0 :(得分:2)

我们可以为任何一元类型的构造函数推广一下这个方法并避免类型重复(如果你愿意的话,可以为if [ -t 1 ]添加一个约束):

F[_] <: Seq[_]

然后类型推断适用于我们:

def testFunc[F[_], A : Numeric](x: F[A]): F[A] = x