Programming languages 允许不同参数值的单独函数实现的功能的名称是什么?

Programming languages 允许不同参数值的单独函数实现的功能的名称是什么?,programming-languages,terminology,language-features,Programming Languages,Terminology,Language Features,在某些编程语言中,可以为参数的特定值指定函数实现: factorial[x] = x * factorial[x-1] factorial[0] = 1 使用0调用函数将使用第二个定义,而使用3调用函数将使用第一个定义 我知道这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多语言没有此功能,而只是根据算术或类型重载。有更具体的名称吗?在数学中就是这样。例如,在Scala中,可以使用如下语句实现它们 val factorial: Int => Int = { case 0

在某些编程语言中,可以为参数的特定值指定函数实现:

factorial[x] = x * factorial[x-1]
factorial[0] = 1
使用
0
调用函数将使用第二个定义,而使用
3
调用函数将使用第一个定义

我知道这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多语言没有此功能,而只是根据算术或类型重载。有更具体的名称吗?

在数学中就是这样。例如,在Scala中,可以使用如下语句实现它们

val factorial: Int => Int = {
  case 0 => 1
  case x => x * factorial(x - 1)
}
哪个输出

factorial(4) // res1: Int = 24
这是一种函数定义形式,使用

类似地,在Haskell中,我们可以像这样使用模式匹配来定义函数

factorial :: Integer -> Integer 
factorial 0 = 1
factorial x = x * factorial (x - 1)

C++模板具有类型的概念。可以为特定类型提供不同的模板实现。这些实现称为专门化。看见