Значений тип і посилальний тип
В програмуванні, типи даних можна розподілити на дві категорії: значений тип (також тип-значення, англ. 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).
Див. також
- Примітивний тип даних
- Складений тип даних
Примітки
- Brown, Erik E. (2006). Windows Forms in Action. Shelter Island, New York: Manning. с. 703. ISBN 978-1-932-39465-8.
- Stephens, Rod (2014). C# 5.0 Programmer's Reference. Indianapolis, Indiana: John Wiley & Sons. с. 57. ISBN 978-1-118-84728-2.
- Type - cppreference.com. en.cppreference.com.
- Chapter 4. Types, Values, and Variables. docs.oracle.com.
- C# Keywords. docs.microsoft.com.
- Structures and Classes — The Swift Programming Language (Swift 5.2). docs.swift.org.
- Closures — The Swift Programming Language (Swift 5.2). docs.swift.org.
- Built-in Types — Python 3.8.2rc1 documentation. docs.python.org.
- ECMAScript® 2019 Language Specification. www.ecma-international.org.
- Chapter 24 The core library. caml.inria.fr.
- 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.