scala方法上的多个类型参数

时间:2014-07-11 14:25:31

标签: scala generics methods

在Java中,Map可以参数化为Map<K, V>,但在Scala中,我不知道方法上多个类型参数的含义是什么,例如:

def foo[T, U, R]

当一个类型参数参数化的方法时,很容易理解。例如def f[T](t: T)

1 个答案:

答案 0 :(得分:9)

假设我想编写一个对任何旧Map[K, V]进行操作的泛型方法 - 我必须在方法类型参数列表中包含两个类型参数:

def mapToList[K, V](m: Map[K, V]): List[(K, V)] = m.toList

三个参数的工作方式相同。假设我有一个函数A => B和另一个B => C,我想把它们组合起来从AC得到一个函数 - 我需要参数列表中的所有三种类型:

def andThen[A, B, C](f: A => B, g: B => C): A => C = (a: A) => g(f(a))

这两个示例都很简单,因为我们已经有m.toListf andThen g,但它们应该清除多个类型参数的用例。