问题标签 [spaceship-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
860 浏览

ternary-operator - 三元运算符如何处理比较运算符(宇宙飞船运算符)

这个问题有点先发制人,因为 php 7 还没有发布。我很好奇如何在三元运算符的上下文中处理宇宙飞船运算符。

所以如果我有一个前宇宙飞船的三元表达式,例如:

使用比较运算符的等效三元运算符是什么?三元组是否会有一些方法来处理这种情况?我经常使用三元运算符,并且很好奇是否有某种方法可以在与比较运算符相关的各种情况下简化代码。

0 投票
3 回答
137403 浏览

php - PHP 7 中的 <=> (“宇宙飞船”运算符)是什么?

将于今年 11 月发布的 PHP 7 将引入 Spaceship (<=>) 运算符。它是什么以及它是如何工作的?

这个问题在我们关于 PHP 操作符的一般参考问题中已经有了答案。

0 投票
1 回答
2427 浏览

php-7 - PHP 的宇宙飞船运算符 <=> 如何处理无法比较的操作数?

PHP 7 中将添加 spaceship 运算符。我不确定它在某些边缘情况下是如何工作的。

$a <=> $b将返回:

  • 1如果 $a > $b
  • 0如果 $a == $b
  • -1如果 $a < $b

如果这些值不具有可比性,会发生什么?

可以比较哪些变量类型?

0 投票
3 回答
14815 浏览

javascript - Javascript中的组合比较/“宇宙飞船”运算符(<=>)?

Ruby 有一个叫做组合比较或“宇宙飞船”运算符的东西,它看起来像这样:<=>

它执行以下操作:

信用

Javascript中是否有类似的运算符?如果没有,我怎么能得到相同的结果?


@madox2建议使用Math.sign(a - b),它适用于数字,但不适用于数组(比较您需要使用的数组array.length)。

它也不适用于 Internet Explorer、Safari 或所有移动浏览器(请参阅MDN


@duques_l在这里找到了一个函数。效果很好,可以在JSFiddle上测试

唯一的问题是,如果字符串不可比较,则函数返回-1而不是nil

更新:@duques_l 稍微改变了函数,现在它工作正常(无论如何我认为是这样,这里是JSFiddle):


0 投票
2 回答
523 浏览

php - 运算符 <=> 如何比较对象?

在给出这个例子的RFC中:

但是当我执行它时,我得到 1 作为输出:

我现在不明白 <=> 如何比较对象?在 RFC 中,它说它仅按值进行比较。

PS我在vagrant下使用PHP 7.0.4-6+deb.sury.org~trusty+1 (cli) ( NTS )

升级版:

0 投票
2 回答
330 浏览

ruby - 除了排序之外,还有没有使用 ruby​​ 组合比较运算符/宇宙飞船运算符?

Ruby 的组合比较运算符或宇宙飞船运算符用于排序。我把这个算子和sort函数一起用了,不明白这个算子的机制。这个运算符还有其他用途吗?

0 投票
2 回答
500 浏览

arrays - 在 Ruby 中使用 spaceship 运算符按 2 个属性对数组中的对象进行排序

我有一个SizeMatters从给定字符串创建对象的类。为了对数组中的这些对象进行排序,我实现了该<=>(other)方法。但以下代码仅有助于按大小对对象进行排序。我还希望数组按字母顺序排序。

我想要的是这个

如何编写<=>(other)以便数组中的对象可以先按大小排序,然后按字母顺序排序?

0 投票
1 回答
1072 浏览

c++ - 为可选实现 operator<=>

随着operator<=>被添加到 C++20 中,我想尝试推理如何在那些不是简单的成员比较的情况下实现这个运算符。

您将如何实现用于比较 anoptional<T>与 anoptional<U>或 a的 spaceship 运算符U,在这种情况下,我们要么必须将 theT与 the进行比较,U要么比较底层状态,以获得正确的返回类型?最新论文中没有这样的例子。

0 投票
5 回答
59065 浏览

c++ - 什么是 C++ 中的 <=>(“宇宙飞船”,三向比较)运算符?

当我尝试学习C++运算符时,我在cppreference.com上偶然发现了一个奇怪的比较运算符,*在一个看起来像这样的表中:

在此处输入图像描述

“好吧,如果这些是 C++ 中的常用运算符,我最好学习它们”,我想。但我所有试图解开这个谜团的尝试都没有成功。即使在这里,在 Stack Overflow 上我的搜索也没有运气。

<=>C++之间有联系吗?

如果有,这个操作员究竟做了什么?

* 与此同时,cppreference.com 更新了该页面,现在包含有关<=>运营商的信息。

0 投票
6 回答
4633 浏览

c++ - “比较小于 0”是什么意思?

语境

在阅读一致比较时,我注意到比较动词的特殊用法:

有一个新的三向比较运算符<=>。表达式a <=> b 返回一个对象,如果a < b比较<0 ,如果a > b比较>0 ,如果ab相等/等价,则比较==0 。

在互联网上找到的另一个例子(强调我的):

它返回一个在失败时比较小于零的值。否则,返回的值可以用作稍后调用 get 的第一个参数。

最后一个示例,可在 GitHub 上找到(重点是我的):

// 执行循环 16 位比较。
// 如果两个数字之间的距离大于 32767,
// 并且数字大于 32768,则减去 65536
// 因此,65535比较小于 0,但大于 65534
// 这处理 65535->0 换行正确围绕案例

当然,对于有经验的程序员来说意义是很清楚的。但是在这些例子中使用比较动词的方式在任何标准化的英语形式中都不是标准的。

问题*

  • 编程术语句子“对象比较小于零”如何翻译成简单的英语
  • 这是否意味着如果将对象与结果进行比较,0结果将“小于零”?
  • 为什么说“对象小于零”而不是“对象比较小于零”是错误的?

* 我向英语学习者英语语言与用法寻求帮助。