返回其参数的函数的名称?


34

不执行任何操作,不接受任何参数且不返回任何内容的函数在传统上称为noop或no-op。下面是一个noop的示例:

function noop(){}

http://en.wikipedia.org/wiki/NOP

那么,是否有一个函数名称仅用于返回其参数,而不做其他任何事情?这种功能的一个例子:

function(a){return a}


17
对于投票者:这不是一个基于观点的问题,有一个明确的答案。
丹妮丝

@Daenyth “它通常也被称为直通” -可能不是最终显示为它
蚊蚋

2
@gnat pass-through用于引用子类中的方法,这些方法调用父方法而不更改参数或父方法返回的任何内容。但是super方法可能不返回任何内容或完全不同的东西。返回传递的相同内容不是传递定义的一部分。如果是这样,那仅仅是因为特定的父方法可以这样做。实际上,仅返回返回与传递的值相同的值的OO类方法非常少见。
itsbruce

4
@Snowman这不是明智的声明。在支持高阶函数的任何语言中,可以返回对给定输入可以执行任意操作的函数,在某些情况下能够返回不更改输入的函数非常有用。它允许使用功能而不是关键字来创建控制流。当折叠列表(或其他结构)以创建复合函数(如差异列表)时,标识函数通常是自然种子值。
itsbruce

Answers:


65

它称为身份函数,有时缩写为id类别理论和函数编程语言。


4
尽管应该指出,大多数程序员没有正式的背景知识或函数式编程知识来了解这一点。也通常称为传递。
Telastyn 2015年

5
我已经做了很多形式化的数学运算,但是由于某种原因,直到我看到这个答案并面色苍白时,我才不记得答案。
Ixrec 2015年

5
@Telastyn 在Java 8中,它仍然被称为“身份”。该名称已从其数学/函数背景中淡出并成为标准。
2015年

3
确实。而且它具有正式的词根,加上对该术语的广泛认知,使得它比某些任意的,特定于语言的术语更有用。
itsbruce 2015年

11
@Telastyn“ pass through”几乎总是在OO中使用,专门指代调用父方法而不更改参数的方法。这比身份函数的概念既具体又受限制,这不仅是因为OO方法通常不返回任何参数,而是返回参数-或完全不同的东西。因此,尽管传递将返回与super方法相同的东西,但根本不需要返回原始参数。这些是不同的东西。
itsbruce 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.