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

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

Класифікація за мовою

МоваЗначений типПосилальний тип
C++[3]booleans, characters, integer numbers, floating-point numbers, classes (включаючи strings, lists, maps, sets, stacks, queues), enumerationsreferences, pointers
Java[4]booleans, characters, integer numbers, floating-point numbersarrays, 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), enumerationsclasses (включаючи 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 stringsarrays, 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.
  2. Stephens, Rod (2014). C# 5.0 Programmer's Reference. Indianapolis, Indiana: John Wiley & Sons. с. 57. ISBN 978-1-118-84728-2.
  3. Type - cppreference.com. en.cppreference.com.
  4. Chapter 4. Types, Values, and Variables. docs.oracle.com.
  5. C# Keywords. docs.microsoft.com.
  6. Structures and Classes — The Swift Programming Language (Swift 5.2). docs.swift.org.
  7. Closures — The Swift Programming Language (Swift 5.2). docs.swift.org.
  8. Built-in Types — Python 3.8.2rc1 documentation. docs.python.org.
  9. ECMAScript® 2019 Language Specification. www.ecma-international.org.
  10. Chapter 24 The core library. caml.inria.fr.
  11. Modifiable Data Structures. caml.inria.fr.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.