Имя для функции, которая возвращает свои аргументы?


34

Функция, которая ничего не делает, не принимает аргументов и ничего не возвращает, традиционно называется a noopили no-op. Пример noop ниже:

function noop(){}

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

Так есть ли имя для функции, которая предназначена только для того, чтобы возвращать свои аргументы и ничего не делать? Пример такого рода функции:

function(a){return a}


17
Для избирателей: это не вопрос, основанный на мнении, есть однозначный ответ.
Daenyth

@Daenyth «Это также широко известно как сквозной» - вероятно, не так окончательно, как кажется
комнат

2
Сквозной проход @gnat используется для ссылки на методы в подклассе, которые вызывают родительский метод без изменения параметров или того, что возвращает родительский метод. Но супер метод может ничего не возвращать или что-то совсем другое. Возвращение того же, что передано, не является частью определения сквозного соединения. Если это так, то только потому, что это делает конкретный родительский метод. Фактически, методы класса OO, которые ничего не делают, но возвращают то же значение, которое они передали, встречаются крайне редко.
Брюс

4
@ Снеговик Это не информированное заявление. На любом языке, который поддерживает функции высшего порядка, который может возвращать функцию, которая может выполнять любые произвольные действия с данным вводом, очень полезно иметь возможность возвращать при некоторых обстоятельствах функцию, которая не изменяет ввод. Это позволяет создавать потоки управления с помощью функций, а не ключевых слов. При сворачивании списка (или другой структуры) для создания составной функции (как в случае списков различий) функция тождества часто является естественным начальным значением.
Брюс

Ответы:


65

Она называется тождественной функцией и иногда сокращается, как idв теории категорий и функциональных языках программирования.


4
Хотя следует отметить, что большинство программистов не имеют формальных знаний или знаний по функциональному программированию, чтобы это знать. Это также широко известно как сквозной.
Теластин

5
Я сделал много формальной математики, но по какой-то причине я не запомнил ответ, пока не увидел это и не переделал лицо.
Иксрек

5
@Telastyn И в Java 8 это все еще называется «идентичность». Название выходит из своего математического / функционального фона и становится стандартом.
Изката

3
Верно. И тот факт, что он имеет формальный корень в сочетании с распространением понимания этого термина, делает его более полезным, чем какой-то произвольный, специфичный для языка жаргон.
Брюс

11
@Telastyn "pass through" почти всегда используется в OO, ссылаясь конкретно на методы, которые вызывают метод родителя без изменения параметров. Это более конкретно и ограниченно, чем концепция функции идентификации, не в последнюю очередь потому, что метод ОО часто не возвращает ничего, кроме аргумента - или чего-то совершенно другого. Таким образом, хотя сквозной метод возвращает то же самое, что и метод super, совсем не обязательно возвращать исходный аргумент. Это разные вещи.
itbruce
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.