允许为不同的参数值分别实现功能的功能的名称是啥?
Posted
技术标签:
【中文标题】允许为不同的参数值分别实现功能的功能的名称是啥?【英文标题】:What is the name of feature that allows separate function implementations for different values of parameters?允许为不同的参数值分别实现功能的功能的名称是什么? 【发布时间】:2019-12-06 03:08:59 【问题描述】:在某些编程语言中,可以为特定的参数值指定函数实现:
factorial[x] = x * factorial[x-1]
factorial[0] = 1
使用0
调用函数将使用第二个定义,而使用3
调用函数将使用第一个定义。
我知道这是一种函数重载,但是如果我要搜索具有函数重载的语言,我会发现很多没有此功能但仅根据数量或类型进行重载的语言。有没有更具体的名称?
【问题讨论】:
C++ 模板有这个类型的概念。可以为特定类型提供模板的不同实现。这些实现称为specializations。见partial template specialization。 【参考方案1】:这样的case-by-case functions在数学上被称为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)
【讨论】:
以上是关于允许为不同的参数值分别实现功能的功能的名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章