Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В компьютерном программировании, обобщённая функция — это функция, предназначенная для полиморфизма.
In computer programming, a generic function is a function defined for polymorphism.
На языках с статическим типом
В статически типизированных языках (таких как C++ и Java) термин "генерические функции" относится к механизму полиморфизма во время компиляции (статической диспетчеризации), а именно параметрического полиморфизма. Это функции, определенные с использованием параметров типов (TypeParameters), которые должны быть разрешены информацией о типах во время компиляции. Компилятор использует эти типы для создания соответствующих экземпляров и корректного разрешения перегрузок функций.
In statically typed languages (such as C++ and Java), the term generic functions refers to a mechanism for compile time polymorphism (static dispatch), specifically parametric polymorphism. These are functions defined with TypeParameters, intended to be resolved with compile time type information. The compiler uses these types to instantiate suitable versions, resolving any function overloading appropriately.
Сравнение с другими языками
Общие функции примерно соответствуют понятиям методов в Smalltalk, за исключением того, что в Smalltalk класс объекта-получателя однозначно определяет, какое тело кода будет вызвано: типы или значения аргументов не имеют значения (одинарная отправка). В языке программирования с множественной отправкой при вызове общей функции выбор метода осуществляется на основе всех аргументов, а не только одного, имеющего приоритет. New Flavors также поддерживали общие функции, но только с одинарной отправкой. В JavaScript общая функция – это функция, способная работать со значениями различных типов, а не с конкретным типом. Это достигается за счет использования типовых параметров или динамической проверки типа оперируемого значения. Распространенным применением общих функций в JavaScript является создание повторно используемых функций, которые могут работать с разными типами данных, такими как массивы, строки или объекты. Динамическая система типизации JavaScript делает его особенно подходящим для создания общих функций, поскольку значения можно легко приводить или преобразовывать в различные типы по мере необходимости.
Generic functions correspond roughly to what Smalltalk terms methods, with the notable exception that, in Smalltalk, the receiver's class is the sole determinant of which body of code is called: the types or values of the arguments are irrelevant (single dispatch). In a programming language with multiple dispatch when a generic function is called, method dispatch occurs on the basis of all arguments, not just one which is privileged. New Flavors also provided generic functions, but only single dispatch. In JavaScript, a generic function is a function that can work with values of different types, rather than a specific type. This is achieved through the use of type parameters or by dynamically checking the type of the value being operated on. One common use case for generic functions in JavaScript is to create reusable functions that can work with different data types, such as arrays, strings, or objects. JavaScript's dynamic typing system makes it particularly suited for the creation of generic functions, as values can be easily coerced or converted to different types as needed.