scala方法上的多个类型参数

scala方法上的多个类型参数,scala,generics,methods,Scala,Generics,Methods,在Java中,Map可以参数化为Map,但在Scala中,我不知道方法上多个类型参数的含义,例如: def foo[T, U, R] 当一个方法被一个类型参数参数参数化时,很容易理解。例如def[T](T:T)假设我想编写一个通用方法,对任何旧的Map[K,V]进行操作-我必须在方法类型参数列表中包括两个类型参数: def mapToList[K, V](m: Map[K, V]): List[(K, V)] = m.toList def andThen[A, B, C](f: A =>

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

def foo[T, U, R]

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

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

def mapToList[K, V](m: Map[K, V]): List[(K, V)] = m.toList
def andThen[A, B, C](f: A => B, g: B => C): A => C = (a: A) => g(f(a))
三个参数的工作方式相同。假设我有一个函数
a=>B
和另一个函数
B=>C
,我想组合它们以获得从
a
C
的函数-我需要参数列表中的所有三种类型:

def mapToList[K, V](m: Map[K, V]): List[(K, V)] = m.toList
def andThen[A, B, C](f: A => B, g: B => C): A => C = (a: A) => g(f(a))

这两个例子都是微不足道的,因为我们已经有了
m.toList
f和then g
,但是它们应该让多类型参数的用例变得清晰起来。

问题是什么?如果你不介意一个无耻的插件,我写了一篇文章,旨在学习Scala中类型级编程的基础知识。我同样来自Java背景,所以我相信这会对你有所帮助。@joescii:这是一篇很棒的博客文章,但我不认为这个问题是关于“类型级编程”的,按照通常的定义,它只是简单的旧泛型,或多或少等同于Java版本。@TravisBrown:我同意你的观点,下面是你的答案。我的想法是,通过接触类型级编程,可以对该用户有一个更全面的了解。