Введение

В компьютерном программировании, обобщённая функция — это функция, предназначенная для полиморфизма.

На языках с статическим типом

В статически типизированных языках (таких как C++ и Java) термин "генерические функции" относится к механизму полиморфизма во время компиляции (статической диспетчеризации), а именно параметрического полиморфизма. Это функции, определенные с использованием параметров типов (TypeParameters), которые должны быть разрешены информацией о типах во время компиляции. Компилятор использует эти типы для создания соответствующих экземпляров и корректного разрешения перегрузок функций.

Сравнение с другими языками

Общие функции примерно соответствуют понятиям методов в Smalltalk, за исключением того, что в Smalltalk класс объекта-получателя однозначно определяет, какое тело кода будет вызвано: типы или значения аргументов не имеют значения (одинарная отправка). В языке программирования с множественной отправкой при вызове общей функции выбор метода осуществляется на основе всех аргументов, а не только одного, имеющего приоритет. New Flavors также поддерживали общие функции, но только с одинарной отправкой. В JavaScript общая функция – это функция, способная работать со значениями различных типов, а не с конкретным типом. Это достигается за счет использования типовых параметров или динамической проверки типа оперируемого значения. Распространенным применением общих функций в JavaScript является создание повторно используемых функций, которые могут работать с разными типами данных, такими как массивы, строки или объекты. Динамическая система типизации JavaScript делает его особенно подходящим для создания общих функций, поскольку значения можно легко приводить или преобразовывать в различные типы по мере необходимости.