什么是红宝石<=> (宇宙飞船)操作员?
什么是 Ruby <=>
(宇宙飞船)运算符? 该运算符是否由其他语言实现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
什么是 Ruby <=>
(宇宙飞船)运算符? 该运算符是否由其他语言实现?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
太空船运算符将返回
1
,< code>0 或−1
取决于左侧参数相对于右侧参数的值。它通常用于对数据进行排序。
它也称为三向比较运算符。 Perl 可能是第一个使用它的语言。 支持它的其他一些语言包括 Apache Groovy、PHP 7+ 和 C++20。
The spaceship operator will return
1
,0
, or−1
depending on the value of the left argument relative to the right argument.It's commonly used for sorting data.
It's also known as the Three-Way Comparison Operator. Perl was likely the first language to use it. Some other languages that support it are Apache Groovy, PHP 7+, and C++20.
当您在自己的类中定义 spaceship 方法并包含 Comparable 模块 时,spaceship 方法非常有用。 然后你的类会得到
>, < 、>=、<=、== 和 Between?
方法是免费的。The spaceship method is useful when you define it in your own class and include the Comparable module. Your class then gets the
>, < , >=, <=, ==, and between?
methods for free.我将用简单的例子来解释
[1,3,2] <=> [2,2,2]
Ruby 将从左侧开始比较两个数组的每个元素。
左侧数组的
1
小于右侧数组的2
。 因此,左数组比右数组小。 输出将为-1
。<代码>[2,3,2] <=> [2,2,2]
如上所述,它将首先比较第一个元素是否相等,然后比较第二个元素,在这种情况下,左侧数组的第二个元素更大,因此输出为
1
。I will explain with simple example
[1,3,2] <=> [2,2,2]
Ruby will start comparing each element of both array from left hand side.
1
for left array is smaller than2
of right array. Hence left array is smaller than right array. Output will be-1
.[2,3,2] <=> [2,2,2]
As above it will first compare first element which are equal then it will compare second element, in this case second element of left array is greater hence output is
1
.这是一个通用的比较运算符。 它返回 -1、0 或 +1,具体取决于其接收者是否小于、等于或大于其参数。
It's a general comparison operator. It returns either a -1, 0, or +1 depending on whether its receiver is less than, equal to, or greater than its argument.
由于此运算符减少了与整数表达式的比较,因此它提供了基于多个列/属性进行升序或降序排序的最通用方法。
例如,如果我有一个对象数组,我可以做这样的事情:
这个基本模式可以推广为按任意数量的列进行排序,每列的升序/降序的任意排列。
Since this operator reduces comparisons to an integer expression, it provides the most general purpose way to sort ascending or descending based on multiple columns/attributes.
For example, if I have an array of objects I can do things like this:
This basic pattern can be generalized to sort by any number of columns, in any permutation of ascending/descending on each.
根据引入运算符的 RFC,$a
<=>
$b示例:
MORE :
According to the RFC that introduced the operator, $a
<=>
$bExample:
MORE: