Тип значения и тип ссылки - Value type and reference type

В компьютерном программировании , типы данных можно разделить на две категории: типы значений и ссылочные типы . Фактическое значение - это значение типа значения. Значение ссылочного типа - это ссылка на другое значение.

Классификация по языкам

Язык Тип ценности Тип ссылки
C ++ логические значения, символы, целые числа, числа с плавающей запятой, классы (включая строки, списки, карты, наборы, стеки, очереди), перечисления ссылки, указатели
Ява логические значения, символы, целые числа, числа с плавающей запятой массивы, классы (включая неизменяемые строки, списки, словари, наборы, стеки, очереди, перечисления), интерфейсы, нулевой указатель
C # структуры (включая логические, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, списки, словари, наборы, стеки, очереди, необязательные параметры), перечисления классы (включая неизменяемые строки, массивы, кортежи, списки, словари, наборы, стеки, очереди), интерфейсы, указатели
Swift структуры (включая логические значения, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, изменяемые строки, кортежи, изменяемые массивы, изменяемые словари, изменяемые наборы), перечисления (включая необязательные), а также определяемые пользователем структуры и перечисления, составляющие другие типы значений. функции, замыкания, классы
Python классы (включая неизменяемые логические значения, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые комплексные числа, неизменяемые строки, байтовые строки, неизменяемые байтовые строки, неизменяемые кортежи, неизменяемые диапазоны, неизменяемые представления памяти, списки, словари, наборы, неизменяемые наборы, null указатель)
JavaScript неизменяемые логические значения, неизменяемые числа с плавающей запятой, неизменяемые символы, неизменяемые строки, undefined, прототипы (включая списки, нулевой указатель)
OCaml неизменяемые символы, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые кортежи, неизменяемые перечисления (включая неизменяемые единицы, неизменяемые логические значения, неизменяемые списки, неизменяемые опции), неизменяемые исключения, неизменяемые строки форматирования массивы, неизменяемые строки, байтовые строки, словари (включая указатели)

Бокс и распаковка

Языки программирования, которые различают типы значений и ссылочные типы, обычно предлагают механизм, называемый боксом , для обертывания некоторых или всех их типов значений в ссылочные типы. Это позволяет использовать типы значений в контекстах, ожидающих ссылочных типов. Обратный процесс (чтобы развернуть тип значения) известен как распаковка .

Смотрите также

Рекомендации