fbpx
维基百科

单值类型

数理逻辑计算机科学类型论中,单值类型(unit type)是只允许1个值的数据类型。单值类型的基础集(underlying set)是单元素集合。由于任何2个单元素集合同构,因而习惯称“这个单值集合”( the unit type),不必考虑具体的值是什么。也可以把单值类型视作0-元组,如无类型的

单值类型是范畴论中类型和有类型函数的终对象,不应与 zero底类型英语bottom type混淆。后两者允许no值,是范畴的始对象。类似的,布尔类型是有2个值的类型。

大多数函数式编程语言都实现了单值类型。一些指令式语言使用void类型,但其取值为空集,还是有所不同。

编程语言支持 编辑

  • Haskell, Rust, Elm, 单值类型被称作(),其仅有的值也写作(), 解释为0元组。
  • ML语言家族(包括OCaml, Standard ML, F#), 单值类型被称作unit,但其值写作().
  • Scala语言中,单值类型称作Unit,其值写作().
  • Common Lisp中,单值类型名字是NULL,其取值为NIL。不要与类型NIL混淆,该类型是底类型英语bottom type
  • Python中的类型NoneType,仅有的取值为None.
  • Swift中单值类型是Void(),其值写作()
  • Java语言中单值类型为Void,其值写作null.
  • Go语言中单值类型为struct{},其值写作struct{}{}.
  • PHP中单值类型为null,其值写作NULL
  • JavaScript中,类型Null (取值为null)和类型Undefined (取值为undefined)都是原生单值类型
  • Kotlin中单值类型为Unit,其值为Unit对象
  • Ruby中单值类型为NilClass,其值写作nil
  • C++17中单值类型为std::monostate。更早版本可自定义空结构struct empty{}.

Void类型用作单值类型 编辑

C语言, C++, C#, D, void用于指示函数不返回任何有用结果,或函数无参数。C语言中的单值类型在概念上类似于空struct,但C语言不允许无成员的结构(C++允许)。

真正的单值类型与void类型的使用区别,可以参见下例:

void f(void) {} void g(void) {} int main(void) {  f(g()); // compile-time error here  return 0; } 

C++允许空类作为单值类型:

class 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));  return 0; } 

void类型不用占存储。但单值类型在结构或类中是占一定空间存储的。

参见 编辑

参考文献 编辑

单值类型, 此條目已列出參考文獻, 但因為沒有文內引註而使來源仍然不明, 2022年3月2日, 请加上合适的文內引註来改善这篇条目, 在数理逻辑, 计算机科学和类型论中, unit, type, 是只允许1个值的数据类型, 的基础集, underlying, 是单元素集合, 由于任何2个单元素集合同构, 因而习惯称, 这个单值集合, unit, type, 不必考虑具体的值是什么, 也可以把视作0, 元组, 如无类型的积, 是范畴论中类型和有类型函数的终对象, 不应与, zero或底类型, 英语, bottom, . 此條目已列出參考文獻 但因為沒有文內引註而使來源仍然不明 2022年3月2日 请加上合适的文內引註来改善这篇条目 在数理逻辑 计算机科学和类型论中 单值类型 unit type 是只允许1个值的数据类型 单值类型的基础集 underlying set 是单元素集合 由于任何2个单元素集合同构 因而习惯称 这个单值集合 the unit type 不必考虑具体的值是什么 也可以把单值类型视作0 元组 如无类型的积 单值类型是范畴论中类型和有类型函数的终对象 不应与 zero或底类型 英语 bottom type 混淆 后两者允许no值 是范畴的始对象 类似的 布尔类型是有2个值的类型 大多数函数式编程语言都实现了单值类型 一些指令式语言使用void类型 但其取值为空集 还是有所不同 目录 1 编程语言支持 1 1 Void类型用作单值类型 2 参见 3 参考文献编程语言支持 编辑Haskell Rust Elm 单值类型被称作 其仅有的值也写作 解释为0元组 ML语言家族 包括OCaml Standard ML F 单值类型被称作unit 但其值写作 Scala语言中 单值类型称作Unit 其值写作 在Common Lisp中 单值类型名字是NULL 其取值为NIL 不要与类型NIL 混淆 该类型是底类型 英语 bottom type Python中的类型NoneType 仅有的取值为None Swift中单值类型是Void或 其值写作 Java语言中单值类型为Void 其值写作null Go语言中单值类型为struct 其值写作struct PHP中单值类型为null 其值写作NULL JavaScript中 类型Null 取值为null 和类型Undefined 取值为undefined 都是原生单值类型 Kotlin中单值类型为Unit 其值为Unit对象 Ruby中单值类型为NilClass 其值写作nil C 17中单值类型为std monostate 更早版本可自定义空结构struct empty Void类型用作单值类型 编辑 C语言 C C D void用于指示函数不返回任何有用结果 或函数无参数 C语言中的单值类型在概念上类似于空struct 但C语言不允许无成员的结构 C 允许 真正的单值类型与void类型的使用区别 可以参见下例 void f void void g void int main void f g compile time error here return 0 C 允许空类作为单值类型 class 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 return 0 void类型不用占存储 但单值类型在结构或类中是占一定空间存储的 参见 编辑单例模式参考文献 编辑Pierce Benjamin C Types and Programming Languages MIT Press 2002 118 119 ISBN 0 262 16209 1 nLab的unit type條目 取自 https zh wikipedia org w index php title 单值类型 amp oldid 71049123, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。