在Java中,Map
可以参数化为Map<K, V>
,但在Scala中,我不知道方法上多个类型参数的含义是什么,例如:
def foo[T, U, R]
当一个类型参数参数化的方法时,很容易理解。例如def f[T](t: T)
。
答案 0 :(得分:9)
假设我想编写一个对任何旧Map[K, V]
进行操作的泛型方法 - 我必须在方法类型参数列表中包含两个类型参数:
def mapToList[K, V](m: Map[K, V]): List[(K, V)] = m.toList
三个参数的工作方式相同。假设我有一个函数A => B
和另一个B => C
,我想把它们组合起来从A
到C
得到一个函数 - 我需要参数列表中的所有三种类型:
def andThen[A, B, C](f: A => B, g: B => C): A => C = (a: A) => g(f(a))
这两个示例都很简单,因为我们已经有m.toList
和f andThen g
,但它们应该清除多个类型参数的用例。