Значеннєвий тип і посилальний тип

В програмуванні, типи даних можна розподілити на дві категорії: значеннєвий тип (також тип-значення, англ. value type) і посилальний тип (також тип-посилання, англ. reference type). Величина значеннєвого типу зберігає фактичне значення. Значенням посилального типу є посилання на якесь значення.[1][2]

Класифікація за мовою ред.

Мова Значеннєвий тип Посилальний тип
C++[3] booleans, characters, integer numbers, floating-point numbers, classes (включаючи strings, lists, maps, sets, stacks, queues), enumerations references, pointers
Java[4] booleans, characters, integer numbers, floating-point numbers arrays, classes (включаючи immutable strings, lists, dictionaries, sets, stacks, queues, enumerations), interfaces, null pointer
C#[5] structures (включаючи booleans, characters, integer numbers, floating-point numbers, fixed-point numbers, lists, dictionaries, sets, stacks, queues, optionals), enumerations classes (включаючи immutable strings, arrays, tuples, lists, dictionaries, sets, stacks, queues), interfaces, pointers
Swift[6][7] structures (включаючи booleans, characters, integer numbers, floating-point numbers, fixed-point numbers, immutable strings, tuples, lists, dictionaries, sets, stacks, queues), enumerations (включаючи optionals) functions, classes, interfaces
Python[8] classes (включаючи immutable booleans, immutable integer numbers, immutable floating-point numbers, immutable complex numbers, immutable strings, byte strings, immutable byte strings, immutable tuples, immutable ranges, immutable memory views, lists, dictionaries, sets, immutable sets, null pointer)
JavaScript[9] immutable booleans, immutable floating-point numbers, immutable symbols, immutable strings, undefined, prototypes (включаючи lists, null pointer)
OCaml[10][11] immutable characters, immutable integer numbers, immutable floating-point numbers, immutable tuples, immutable enumerations (включаючи immutable units, immutable booleans, immutable lists, immutable optionals), immutable exceptions, immutable formatting strings arrays, immutable strings, byte strings, dictionaries (включаючи pointers)

Пакування та розпакування ред.

Мови програмування, які відокремлюють значеннєві типи і посилальні типи, зазвичай пропонують механізм під назвою пакування (англ. boxing), для обгортання деяких або усіх значеннєвих типів у посилальні. Це дозволяє використовувати значеннєві типи у тих контекстах, де очікуються посилальні типи. Зворотний процес, для розгортання значеннєвого типу, називається розпакуванням (англ. unboxing).

Див. також ред.

Примітки ред.

  1. Brown, Erik E. (2006). Windows Forms in Action. Shelter Island, New York: Manning. с. 703. ISBN 978-1-932-39465-8. Архів оригіналу за 16 серпня 2018. Процитовано 8 квітня 2020.
  2. Stephens, Rod (2014). C# 5.0 Programmer's Reference. Indianapolis, Indiana: John Wiley & Sons. с. 57. ISBN 978-1-118-84728-2. Архів оригіналу за 16 серпня 2018. Процитовано 8 квітня 2020.
  3. Type - cppreference.com. en.cppreference.com. Архів оригіналу за 13 листопада 2020. Процитовано 8 квітня 2020.
  4. Chapter 4. Types, Values, and Variables. docs.oracle.com. Архів оригіналу за 29 серпня 2020. Процитовано 8 квітня 2020.
  5. C# Keywords. docs.microsoft.com. Архів оригіналу за 26 листопада 2020. Процитовано 8 квітня 2020.
  6. Structures and Classes — The Swift Programming Language (Swift 5.2). docs.swift.org. Архів оригіналу за 11 грудня 2020. Процитовано 8 квітня 2020.
  7. Closures — The Swift Programming Language (Swift 5.2). docs.swift.org. Архів оригіналу за 6 лютого 2021. Процитовано 8 квітня 2020.
  8. Built-in Types — Python 3.8.2rc1 documentation. docs.python.org. Архів оригіналу за 14 червня 2020. Процитовано 8 квітня 2020.
  9. ECMAScript® 2019 Language Specification. www.ecma-international.org. Архів оригіналу за 13 січня 2021. Процитовано 8 квітня 2020.
  10. Chapter 24 The core library. caml.inria.fr. Архів оригіналу за 2 липня 2020. Процитовано 8 квітня 2020.
  11. Modifiable Data Structures. caml.inria.fr. Архів оригіналу за 22 липня 2020. Процитовано 8 квітня 2020.