~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 36D2B33EBD2D3321CEBAC981C0CFA7C7__1716643080 ✰
Заголовок документа оригинал.:
✰ Unit type - Wikipedia ✰
Заголовок документа перевод.:
✰ Тип юнита — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Unit_type ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/36/c7/36d2b33ebd2d3321cebac981c0cfa7c7.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/36/c7/36d2b33ebd2d3321cebac981c0cfa7c7__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 18:58:44 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 25 May 2024, at 16:18 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Тип юнита — Википедия Jump to content

Тип устройства

Из Википедии, бесплатной энциклопедии

В области математической логики и информатики , известной как теория типов , единичный тип — это тип , который допускает только одно значение (и, следовательно, не может содержать никакой информации). Носитель (базовый набор), связанный с типом единицы, может быть любым одноэлементным набором . Между любыми двумя такими множествами существует изоморфизм , поэтому принято говорить о типе единицы, игнорируя детали ее значения. Можно также рассматривать тип единицы как тип 0- кортежей , т.е. произведение без типов.

Тип модуля — это терминальный объект в категории типов и типизированных функций. Его не следует путать с нулевым или пустым типом , который не допускает никаких значений и является начальным объектом в этой категории. Аналогично, Boolean — это тип с двумя значениями.

Тип unit реализован в большинстве функциональных языков программирования. Тип void , который используется в некоторых императивных языках программирования, выполняет некоторые из своих функций, но поскольку его набор носителей пуст, он имеет некоторые ограничения (как подробно описано ниже).

В языках программирования [ править ]

Некоторые языки программирования предоставляют тип модуля для указания типа результата функции с единственной целью вызвать побочный эффект , а также тип аргумента функции, которая не требует аргументов.

  • В Haskell , Rust и Elm тип модуля называется () и его единственная ценность также (), отражающий интерпретацию 0-кортежа.
  • В ML потомках (включая OCaml , Standard ML и F# ) тип называется unit но значение записывается как ().
  • В Scala тип единицы называется Unit и его единственное значение записывается как ().
  • В Common Lisp тип с именем NULL — это тип единицы, который имеет одно значение, а именно символ НОЛЬ . Это не следует путать с NIL Тип , который является нижним типом .
  • В Python есть тип под названием NoneType что позволяет использовать одно значение None. В необязательных аннотациях статического типа Python этот тип представлен как None. [1]
  • В Swift тип единицы называется Void или () и его единственная ценность также (), отражающий интерпретацию 0-кортежа.
  • В Java тип единицы называется Void и его единственное значение null.
  • В Go тип юнита прописан struct{} и его значение struct{}{}.
  • В PHP тип единицы измерения называется null, единственным значением которого является NULL.
  • В JavaScript оба Null (его единственное значение null) и Undefined (его единственное значение undefined) являются встроенными типами модулей.
  • в Котлине , Unit является синглтоном только с одним значением: Unit объект.
  • В Руби , nil является единственным экземпляром NilClass сорт.
  • В C ++ std::monostateтип единицы измерения был добавлен в C++17. До этого можно определить тип пользовательского модуля, используя пустую структуру, например struct empty{}.

Тип пустоты как тип юнита [ править ]

В C , C++ , # , D и PHP C voidиспользуется для обозначения функции, которая не возвращает ничего полезного, или функции, не принимающей аргументов. Тип единицы измерения в C концептуально аналогичен пустому элементу. struct, но структура без членов не разрешена в спецификации языка C (это разрешено в C++). Вместо, ' void' используется таким образом, чтобы имитировать некоторые, но не все свойства типа юнита, как подробно описано ниже. Как и большинство императивных языков, C допускает функции, которые не возвращают значение; они указаны как имеющие тип возврата void. Такие функции называются процедурами в других императивных языках, таких как Паскаль , где между функциями и процедурами проводится синтаксическое различие, а не различие в системе типов.

Разница в соглашении о вызовах [ править ]

Первое заметное различие между истинным типом модуля и типом void заключается в том, что тип модуля всегда может быть типом аргумента функции, но тип void не может быть типом аргумента в C, несмотря на то, что он может быть типом аргумента функции. отображаться как единственный аргумент в списке. Эту проблему лучше всего иллюстрирует следующая программа, которая представляет собой ошибку времени компиляции в C:

void   f  (  void  )   {} 
 ​​void   g  (  void  )   {} 

 ​​int   main  (  void  ) 
 { 
   f  (  g  ());    // ошибка времени компиляции 
   return   0  ; 
  } 

Эта проблема не возникает в большинстве случаев программирования на C, поскольку, поскольку voidtype не несет никакой информации, передавать его все равно бесполезно; но это может возникнуть в общем программировании , например, в шаблонах C++ , где voidк ним следует относиться иначе, чем к другим типам. Однако в C++ разрешены пустые классы, поэтому можно реализовать реальный тип модуля; приведенный выше пример становится компилируемым как:

класс   unit_type   {}; 
  const   unit_type   the_unit  ; 

  unit_type   f  (  unit_type  )   {   return   the_unit  ;    } 
 unit_type   g  (  unit_type  )   {   return   the_unit  ;    } 

 int   main  () 
 { 
   f  (  g  (  the_unit  )); 
    вернуть   0  ; 
  } 

(Для краткости: в приведенном выше примере нас не беспокоит, the_unitна самом деле является синглтоном ; см. в шаблоне Singleton подробности по этой проблеме .)

Разница в хранении [ править ]

Второе заметное отличие состоит в том, что тип void является особенным и никогда не может быть сохранен в типе записи , то есть в структуре или классе в C/C++. Напротив, тип единицы измерения может храниться в записях функциональных языков программирования, т.е. он может отображаться как тип поля; приведенную выше реализацию типа единицы в C++ также можно сохранить. Хотя эта функция может показаться бесполезной, она позволяет, например, элегантно реализовать набор в виде сопоставления с типом устройства; даже при отсутствии типа модуля набор можно реализовать таким образом, сохраняя для каждого ключа некоторое фиктивное значение другого типа.

В дженериках [ править ]

В Java Generics параметры типа должны быть ссылочными типами. Тип оболочки Voidчасто используется, когда необходим параметр типа устройства. Хотя Void тип никогда не может иметь экземпляров, у него есть одно значение, null(как и все другие ссылочные типы), поэтому он действует как тип единицы. На практике любой другой нереализуемый тип, например Math, также могут быть использованы для этой цели, поскольку они также имеют ровно одно значение, null.

public   static   Void   f  (  Void   x  )   {   return   null  ;    } 
 Public   static   Void   g  (  Void   x  )   {   return   null  ;    } 

 Public   static   void   main  (  String  []   args  ) 
 { 
     f  (  g  (  null  )); 
  } 

Нулевой тип [ править ]

Статически типизированные языки присваивают тип каждому возможному выражению. Им необходимо связать тип с нулевым выражением. Тип будет определен для значения null и будет иметь только это значение.

Например, в D можно объявить функции, которые могут возвращать только значение null :

typeof  (  null  )   returnThatSpecialThing  () { 
     return   null  ; 
  } 

null — единственное значение, которое может иметь typeof(null) — тип единицы измерения.

См. также [ править ]

  • Шаблон Singleton (когда конкретный класс имеет только один экземпляр, но узкотипизированные ссылки, не допускающие значения NULL, обычно не сохраняются другими классами)

Примечания [ править ]

  1. ^ ван Россум, Гвидо; Левковский Иван. «PEP 483 — использование «Нет»» . Предложения по улучшению Python . Фонд программного обеспечения Python . Проверено 2 марта 2024 г.

Ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 36D2B33EBD2D3321CEBAC981C0CFA7C7__1716643080
URL1:https://en.wikipedia.org/wiki/Unit_type
Заголовок, (Title) документа по адресу, URL1:
Unit type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)