- Объект первого класса
-
Объектами первого класса («first-class object») в контексте конкретного языка программирования называются сущности, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной[1].
Термин был впервые использован в контексте «функции как объекты первого класса» в середине 1960-х[2].
Определение
Объект называют «объектом первого класса» когда он[3][4]:
- может быть сохранен в переменной или структурах данных
- может быть передан в функцию как аргумент
- может быть возвращен из функции как результат
- может быть создан во время выполнения программы
- внутренне самоидентифицируем (независим от именования)
Термин «объект» используется здесь в общем смысле, и не ограничивается объектами языка программирования. Так значения простейших типов данных, например integer и float, во многих языках являются «объектами первого класса».
Примеры
В C и C++ нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (англ. second-class object). Тем не менее, в C++ есть понятие функционального объекта (англ. function object), который является объектом первого класса и реализует эквивалентную функциям семантику[3].
В Smalltalk[5] и JavaScript[6] функции (методы) и классы являются объектами первого класса. Поскольку операторы (
+
,-
) в Smalltalk суть методы, они также являются объектами первого класса.Примечания
- ↑ Scott Michael Programming Language Pragmatics. — San Francisco, CA: Morgan Kaufmann Publishers, 2006. — P. 140.
- ↑ Rod Burstall, «Christopher Strachey—Understanding Programming Languages», Higher-Order and Symbolic Computation 13:52 (2000)
- ↑ 1 2 First Class. C2.com (25 января 2006). Архивировано из первоисточника 16 июля 2012. Проверено 16 июля 2012.
- ↑ first class object. Catalysoft.com. Архивировано из первоисточника 6 августа 2012. Проверено 9 октября 2010.
- ↑ First class functions in many programming languages (examples)
- ↑ Functions are first class objects in JavaScript
Категория:- Объектно-ориентированное программирование
Wikimedia Foundation. 2010.