fbpx
维基百科

三路比较

计算机科学中,三路比较(three-way comparison)取具有全序的属于同一类型的2个值A和B,在一个操作中确定A < B, A = B, 或 A > B。这是数学上的三分律概念。

编程语言支持 编辑

C语言的函数strcmpmemcmp在字符串之间、内存空间之间做三路比较。返回负值表示第一操作数字典序上小于第二操作数;返回零表示2个操作数相等;返回正值表示第一操作数大于第二操作数。标准库的快排序函数qsort把三路比较扩展到任何类型,要求提供一个执行比较的函数指针

C++20引入了“航天飞船运算符”(spaceship operator)<=>做三路比较。[1]

Perl(限数值比较,如果是字符串字典序比较要用cmp运算符), PHP (从版本7), Ruby, Apache Groovy,都使用航天飞船运算符<=>返回−1、0、1分别表示大于、等于、小于。 Python 2.x cmp(被Python 3.x删除)、OCaml compare, 和KotlincompareTo函数做相应的事。Haskell标准库的三路比较函数compare可用于所有属于Ord类型类的类型,返回类型为Ordering, 其值是LT (小于), EQ (相等), GT (大于):[2]

data Ordering = LT | EQ | GT 

许多面向对象编程语言的三路比较方法,在当前对象和其他给定对象之间三路比较。例如,Java语言中任何实现了Comparable接口的类都有compareTo (页面存档备份,存于互联网档案馆)方法,返回非负整数、零、正整数,或抛出一个NullPointerException异常(如果一个或两个对象是null)。类似地,.NET Framework中,任何实现了IComparable接口的类都有CompareTo (页面存档备份,存于互联网档案馆)方法。

从Java 1.5开始,也可以用Math.signum静态方法。

航天飞船运算符 编辑

Perl, PHP, Ruby, Apache Groovy,C++20等语言都使用航天飞船运算符<=>[3]

这个名字起源于Randal L. Schwartz英语Randal L. SchwartzHP分时BASIC英语HP Time-Shared BASIC上的游戏Star Trek的星战飞船。[4]也有编程者建议按星球大战钛战机命名。[5]

PHP例子:

echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 

参见 编辑


参考文献 编辑

  1. ^ Herb Sutter proposed adding a three-way comparison operator to the C++ standard with the <=> syntax, in a paper entitled "Consistent Comparison". See "Consistent Comparison" (页面存档备份,存于互联网档案馆) It was successfully merged into the C++20 draft in November 2017.
  2. ^ . [2022-03-06]. (原始内容存档于2022-03-06). 
  3. ^ . Perl Programming Documentation. [26 September 2014]. (原始内容存档于2020-06-05). 
  4. ^ . [2022-03-06]. (原始内容存档于2020-01-25). 
  5. ^ . 2000-12-08 [2014-08-06]. (原始内容存档于2022-03-06). 

三路比较, 计算机科学中, three, comparison, 取具有全序的属于同一类型的2个值a和b, 在一个操作中确定a, 这是数学上的三分律概念, 目录, 编程语言支持, 航天飞船运算符, 参见, 参考文献编程语言支持, 编辑c语言的函数strcmp和memcmp在字符串之间, 内存空间之间做, 返回负值表示第一操作数在字典序上小于第二操作数, 返回零表示2个操作数相等, 返回正值表示第一操作数大于第二操作数, 标准库的快排序函数qsort把扩展到任何类型, 要求提供一个执行比较的函数指针, 20引入了, . 计算机科学中 三路比较 three way comparison 取具有全序的属于同一类型的2个值A和B 在一个操作中确定A lt B A B 或 A gt B 这是数学上的三分律概念 目录 1 编程语言支持 2 航天飞船运算符 3 参见 4 参考文献编程语言支持 编辑C语言的函数strcmp和memcmp在字符串之间 内存空间之间做三路比较 返回负值表示第一操作数在字典序上小于第二操作数 返回零表示2个操作数相等 返回正值表示第一操作数大于第二操作数 标准库的快排序函数qsort把三路比较扩展到任何类型 要求提供一个执行比较的函数指针 C 20引入了 航天飞船运算符 spaceship operator lt gt 做三路比较 1 Perl 限数值比较 如果是字符串字典序比较要用cmp运算符 PHP 从版本7 Ruby Apache Groovy 都使用航天飞船运算符 lt gt 返回 1 0 1分别表示大于 等于 小于 Python 2 x cmp 被Python 3 x删除 OCaml compare 和Kotlin的compareTo函数做相应的事 Haskell标准库的三路比较函数compare可用于所有属于Ord类型类的类型 返回类型为Ordering 其值是LT 小于 EQ 相等 GT 大于 2 data Ordering LT EQ GT 许多面向对象编程语言的三路比较方法 在当前对象和其他给定对象之间三路比较 例如 Java语言中任何实现了Comparable接口的类都有compareTo 页面存档备份 存于互联网档案馆 方法 返回非负整数 零 正整数 或抛出一个NullPointerException异常 如果一个或两个对象是null 类似地 NET Framework中 任何实现了IComparable接口的类都有CompareTo 页面存档备份 存于互联网档案馆 方法 从Java 1 5开始 也可以用Math signum静态方法 航天飞船运算符 编辑Perl PHP Ruby Apache Groovy C 20等语言都使用航天飞船运算符 lt gt 3 这个名字起源于Randal L Schwartz 英语 Randal L Schwartz 在HP分时BASIC 英语 HP Time Shared BASIC 上的游戏Star Trek 的星战飞船 4 也有编程者建议按星球大战的钛战机命名 5 PHP例子 echo 1 lt gt 1 0 echo 1 lt gt 2 1 echo 2 lt gt 1 1参见 编辑strcmp参考文献 编辑 Herb Sutter proposed adding a three way comparison operator to the C standard with the lt gt syntax in a paper entitled Consistent Comparison See Consistent Comparison 页面存档备份 存于互联网档案馆 It was successfully merged into the C 20 draft in November 2017 Data Ord 2022 03 06 原始内容存档于2022 03 06 Math Complex Perl Programming Documentation 26 September 2014 原始内容存档于2020 06 05 Spaceship history was Re dart misc DEP meeting notes 2022 03 06 原始内容存档于2020 01 25 Super Spaceship Operator 2000 12 08 2014 08 06 原始内容存档于2022 03 06 取自 https zh wikipedia org w index php title 三路比较 amp oldid 71734028, 维基百科,wiki,书籍,书籍,图书馆,

文章

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