Name für eine Funktion, die ihre Argumente zurückgibt?

34

Eine Funktion, die nichts tut, keine Argumente entgegennimmt und nichts zurückgibt, wird traditionell als " noopno-op" bezeichnet. Ein Beispiel für einen Noop ist unten:

function noop(){}

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

Gibt es also einen Namen für eine Funktion, die nur ihre Argumente zurückgeben und nichts anderes tun soll? Ein Beispiel für diese Art von Funktion:

function(a){return a}
Code-Flüsterer
quelle
17
An die Nahwähler: Dies ist keine meinungsbasierte Frage, es gibt eine endgültige Antwort.
Daenyth
@Daenyth „Es ist auch als ein Pass-Through allgemein bekannt“ - wahrscheinlich nicht so endgültig , wie es scheint
gnat
2
@gnat pass-through wird verwendet, um auf Methoden in einer Unterklasse zu verweisen, die eine übergeordnete Methode aufrufen, ohne die Parameter zu ändern oder was auch immer die übergeordnete Methode zurückgibt. Aber die Super-Methode kann nichts oder etwas ganz anderes zurückgeben. Dasselbe zurückzugeben, was übergeben wird, ist nicht Teil der Definition eines Durchgangs. Wenn dies der Fall ist, liegt dies nur daran, dass die bestimmte übergeordnete Methode dies tut. In der Tat sind OO-Klassenmethoden, die nichts anderes tun, als den gleichen Wert zurückzugeben, den sie übergeben wurden, äußerst selten.
Itsbruce
4
@Snowman Das ist keine informierte Aussage. In jeder Sprache, die Funktionen höherer Ordnung unterstützt, die eine Funktion zurückgeben können, die eine beliebige Funktion für eine bestimmte Eingabe ausführen kann, ist es sehr nützlich, unter bestimmten Umständen eine Funktion zurückgeben zu können, die die Eingabe nicht ändert. Es ermöglicht die Erstellung von Kontrollabläufen mit Funktionen anstelle von Schlüsselwörtern. Wenn Sie eine Liste (oder eine andere Struktur) umklappen, um eine zusammengesetzte Funktion zu erstellen (wie im Fall von Differenzlisten), ist die Identitätsfunktion häufig der natürliche Startwert.
Itsbruce

Antworten:

65

Es heißt Identitätsfunktion und wird manchmal abgekürzt wie idin Kategorietheorie und funktionalen Programmiersprachen.

Doval
quelle
4
Es sollte jedoch beachtet werden, dass die meisten Programmierer nicht über den formalen Hintergrund oder die funktionalen Programmierkenntnisse verfügen, um dies zu wissen. Es ist auch allgemein als Durchgang bekannt.
Telastyn
5
Ich habe viele formale Berechnungen angestellt, aber aus irgendeinem Grund konnte ich mich nicht an die Antwort erinnern, bis ich diese sah und mit den Gesichtern sprach.
Ixrec
5
@Telastyn Und in Java 8 heißt es immer noch "Identität". Der Name verliert seinen mathematischen / funktionalen Hintergrund und wird zum Standard.
Izkata,
3
Tatsächlich. Und die Tatsache, dass es eine formale Wurzel hat, kombiniert mit der Verbreitung des Begriffs, macht es nützlicher als irgendeine beliebige, sprachspezifische Fachsprache.
itsbruce
11
@Telastyn "pass through" wird in OO fast immer verwendet und bezieht sich speziell auf Methoden, die die Methode eines übergeordneten Elements aufrufen, ohne die Parameter zu ändern. Dies ist sowohl spezifischer als auch begrenzter als das Konzept der Identitätsfunktion, nicht zuletzt, weil die OO-Methode häufig nichts als das Argument zurückgibt - oder etwas ganz anderes. Während eine Pass-Through-Methode das Gleiche wie die Super-Methode zurückgibt, ist es überhaupt nicht erforderlich, das ursprüngliche Argument zurückzugeben. Das sind verschiedene Dinge.
itsbruce