Nome per una funzione che restituisce i suoi argomenti?


34

Una funzione che non fa nulla, non accetta argomenti e non restituisce nulla è tradizionalmente chiamata a noop, o no-op. Un esempio di noop è di seguito:

function noop(){}

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

Quindi esiste un nome per una funzione che intende solo restituire i suoi argomenti e non fare nient'altro? Un esempio di questo tipo di funzione:

function(a){return a}


17
Per gli elettori ravvicinati: questa non è una domanda basata sull'opinione, c'è una risposta definitiva.
Daenyth,

@Daenyth "È anche comunemente noto come pass-through" - probabilmente non così definitivo come sembra
moscerino

2
Il pass-through @gnat viene utilizzato per fare riferimento a metodi in una sottoclasse che invocano un metodo parent senza modificare i parametri o qualunque cosa restituisca il metodo parent. Ma il super metodo potrebbe non restituire nulla o qualcosa di completamente diverso. Restituire la stessa cosa che viene passata non fa parte della definizione di pass-through. Se lo fa, questo è solo perché lo fa il metodo genitore specifico. In effetti, i metodi di classe OO che non fanno altro che restituire lo stesso valore che sono stati passati sono estremamente rari.
itsbruce

4
@Snowman Non è una dichiarazione informata. In qualsiasi linguaggio che supporti le funzioni di ordine superiore, che può restituire una funzione che può fare qualsiasi cosa arbitraria a un determinato input, è molto utile poter restituire, in alcune circostanze, una funzione che non modifica l'input. Consente di creare flussi di controllo con funzioni anziché parole chiave. Quando si ripiega su un elenco (o altra struttura) per creare una funzione composta (come nel caso degli elenchi differenze), la funzione identità è spesso il valore seme naturale.
itsbruce

Risposte:


65

Si chiama funzione di identità ed è talvolta abbreviata come idnella teoria delle categorie e nei linguaggi di programmazione funzionale.


4
Tuttavia, va notato che la maggior parte dei programmatori non ha il background formale o le conoscenze di programmazione funzionale per saperlo. È anche comunemente noto come pass-through.
Telastyn,

5
Ho fatto un sacco di matematica formale, ma per qualche motivo non mi sono ricordato della risposta fino a quando non ho visto questo e ho affrontato il viso.
Ixrec,

5
@Telastyn E in Java 8 si chiama ancora "identità". Il nome si sta allentando dal suo background matematico / funzionale e sta diventando lo standard.
Izkata,

3
Infatti. E il fatto che abbia una radice formale, unita alla consapevolezza diffusa del termine, lo rende più utile di un gergo arbitrario, specifico della lingua.
itsbruce

11
@Telastyn "pass through" è quasi sempre utilizzato in OO facendo riferimento in particolare a metodi che invocano il metodo di un genitore senza modificare i parametri. Questo è sia più specifico che limitato rispetto al concetto di funzione identitaria, non da ultimo perché il metodo OO spesso non restituirà nulla piuttosto che l'argomento - o qualcosa di completamente diverso. Quindi, mentre un pass-through restituirà la stessa cosa del metodo super, non è affatto necessario restituire l'argomento originale. Queste sono cose diverse.
itsbruce
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.