Ім'я для функції, яка повертає свої аргументи?


34

Функція, яка нічого не робить, не бере аргументів і нічого не повертає, традиційно називається a noop, або no-op. Нижче наведено приклад шурупа:

function noop(){}

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

Отже, чи є назва функції, яка покликана лише повернути свої аргументи, а не робити нічого іншого? Приклад подібної функції:

function(a){return a}


17
Близьким виборцям: Це не питання, засноване на думці, є остаточна відповідь.
Даеніт

@Daenyth "Це також широко відоме як прохід", - мабуть, не настільки остаточний, як здається
gnat

2
@gnat pass-through використовується для позначення методів підкласу, які викликають батьківський метод, не змінюючи параметрів і не повертаючи батьківський метод. Але супер метод може не повернути нічого або щось зовсім інше. Повернення того самого, що передається, не є частиною визначення прохідного. Якщо це так, це лише тому, що це робить конкретний батьківський метод. Насправді методи класу OO, які нічого не роблять, окрім повернення того ж значення, яке вони пройшли, є надзвичайно рідкісними.
йогобрюс

4
@Snowman Це не усвідомлене твердження. Будь-якою мовою, яка підтримує функції вищого порядку, яка може повернути функцію, яка може робити будь-яку довільну річ на заданий вхід, дуже корисно мати можливість повернути в деяких випадках функцію, яка не змінює вхід. Це дозволяє створювати керуючі потоки за допомогою функцій, а не ключових слів. Під час складання списку (або іншої структури) для створення складної функції (як у випадку з різницевими списками) функція ідентичності часто є природним значенням насіння.
йогобрюс

Відповіді:


65

Його називають функцією ідентичності і іноді її скорочують, як idу теорії категорій та мовах функціонального програмування.


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

5
Я робив багато формальної математики, але чомусь не запам’ятав відповідь, поки не побачив цього і не зазнав фальшивої думки.
Іксрек

5
@Telastyn А в Java 8 це все ще називають "ідентичність". Назва полегшується з математичного / функціонального фону і стає стандартним.
Ізката

3
Справді. А той факт, що він має формальний корінь у поєднанні з поширенням обізнаності про цей термін, робить його кориснішим, ніж якийсь довільний жаргон, специфічний для мови.
йогобрюс

11
@Telastyn "пройти через" майже завжди використовується в ОО, посилаючись спеціально на методи, які викликають метод батьків без зміни параметрів. Це і більш конкретно і обмежено, ніж поняття функції ідентичності, не в останню чергу тому, що метод OO часто не повертає нічого, крім аргументу - або щось зовсім інше. Отже, хоча перехід поверне те саме, що і супер метод, взагалі повертати початковий аргумент зовсім не потрібно. Це різні речі.
йогобрюс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.