允许不同参数值的单独函数实现的功能名称是什么?
What is the name of feature that allows separate function implementations for different values of parameters?
在某些编程语言中,可以为特定参数值指定函数实现:
factorial[x] = x * factorial[x-1]
factorial[0] = 1
使用 0
调用函数将使用第二个定义,而使用 3
调用函数将使用第一个定义。
我知道这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多没有此功能但仅根据数量或类型进行重载的语言。有更具体的名称吗?
数学中的case-by-case functions are known as piecewise functions。例如,在 Scala 中,它们可以使用 case
语句来实现,例如
val factorial: Int => Int = {
case 0 => 1
case x => x * factorial(x - 1)
}
输出
factorial(4) // res1: Int = 24
这是一种使用pattern matching的函数定义形式。
类似地,在Haskell中我们可以像这样使用模式匹配定义一个函数
factorial :: Integer -> Integer
factorial 0 = 1
factorial x = x * factorial (x - 1)
在某些编程语言中,可以为特定参数值指定函数实现:
factorial[x] = x * factorial[x-1]
factorial[0] = 1
使用 0
调用函数将使用第二个定义,而使用 3
调用函数将使用第一个定义。
我知道这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多没有此功能但仅根据数量或类型进行重载的语言。有更具体的名称吗?
数学中的case-by-case functions are known as piecewise functions。例如,在 Scala 中,它们可以使用 case
语句来实现,例如
val factorial: Int => Int = {
case 0 => 1
case x => x * factorial(x - 1)
}
输出
factorial(4) // res1: Int = 24
这是一种使用pattern matching的函数定义形式。
类似地,在Haskell中我们可以像这样使用模式匹配定义一个函数
factorial :: Integer -> Integer
factorial 0 = 1
factorial x = x * factorial (x - 1)