Объект первого класса: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Примеры: источник
Строка 17: Строка 17:
== Примеры ==
== Примеры ==


В [[Си (язык программирования)|C]] и [[C++]] нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику.
В [[Си (язык программирования)|C]] и [[C++]] нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику.<ref name="c2FirstClass" />


В [[Smalltalk]] и [[JavaScript]] функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса.
В [[Smalltalk]] и [[JavaScript]] функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса.

Версия от 04:24, 16 июля 2012

Объектами первого класса («first-class object») в контексте конкретного языка программирования называются сущности, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной.[1]

Термин был впервые использован в контексте «функции как объекты первого класса» в середине 1960-х.[2]

Определение

Объект называют «объектом первого класса» когда он[3][4]:

Термин «объект» используется здесь в общем смысле, и не ограничивается объектами языка программирования. Так значения простейших типов данных, например integer и float, во многих языках являются «объектами первого класса».

Примеры

В C и C++ нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику.[3]

В Smalltalk и JavaScript функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса.

Ссылки

  1. Scott, Michael. Programming Language Pragmatics. — San Francisco, CA : Morgan Kaufmann Publishers, 2006.
  2. Rod Burstall, «Christopher Strachey—Understanding Programming Languages», Higher-Order and Symbolic Computation 13:52 (2000)
  3. 1 2 First Class. C2.com (25 января 2006). Дата обращения: 9 октября 2010.
  4. first class object. Catalysoft.com. Дата обращения: 9 октября 2010.