Тип значения и тип ссылки - Value type and reference type
В компьютерном программировании , типы данных можно разделить на две категории: типы значений и ссылочные типы . Фактическое значение - это значение типа значения. Значение ссылочного типа - это ссылка на другое значение.
Классификация по языкам
Язык | Тип ценности | Тип ссылки |
---|---|---|
C ++ | логические значения, символы, целые числа, числа с плавающей запятой, классы (включая строки, списки, карты, наборы, стеки, очереди), перечисления | ссылки, указатели |
Ява | логические значения, символы, целые числа, числа с плавающей запятой | массивы, классы (включая неизменяемые строки, списки, словари, наборы, стеки, очереди, перечисления), интерфейсы, нулевой указатель |
C # | структуры (включая логические, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, списки, словари, наборы, стеки, очереди, необязательные параметры), перечисления | классы (включая неизменяемые строки, массивы, кортежи, списки, словари, наборы, стеки, очереди), интерфейсы, указатели |
Swift | структуры (включая логические значения, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, изменяемые строки, кортежи, изменяемые массивы, изменяемые словари, изменяемые наборы), перечисления (включая необязательные), а также определяемые пользователем структуры и перечисления, составляющие другие типы значений. | функции, замыкания, классы |
Python | классы (включая неизменяемые логические значения, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые комплексные числа, неизменяемые строки, байтовые строки, неизменяемые байтовые строки, неизменяемые кортежи, неизменяемые диапазоны, неизменяемые представления памяти, списки, словари, наборы, неизменяемые наборы, null указатель) | |
JavaScript | неизменяемые логические значения, неизменяемые числа с плавающей запятой, неизменяемые символы, неизменяемые строки, undefined, прототипы (включая списки, нулевой указатель) | |
OCaml | неизменяемые символы, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые кортежи, неизменяемые перечисления (включая неизменяемые единицы, неизменяемые логические значения, неизменяемые списки, неизменяемые опции), неизменяемые исключения, неизменяемые строки форматирования | массивы, неизменяемые строки, байтовые строки, словари (включая указатели) |
Бокс и распаковка
Языки программирования, которые различают типы значений и ссылочные типы, обычно предлагают механизм, называемый боксом , для обертывания некоторых или всех их типов значений в ссылочные типы. Это позволяет использовать типы значений в контекстах, ожидающих ссылочных типов. Обратный процесс (чтобы развернуть тип значения) известен как распаковка .