为了账号安全,请及时绑定邮箱和手机立即绑定

什么是Ruby<=>(宇宙飞船)操作符?

/ 猿问

什么是Ruby<=>(宇宙飞船)操作符?

呼唤远方 2019-10-13 12:08:14

什么是Ruby<=>(宇宙飞船)操作符?

什么是红宝石<=>(宇宙飞船)操作员?操作符是否由其他语言实现?



查看完整描述

3 回答

?
一只萌萌小番薯

Perl很可能是使用它的第一种语言。Groovy是另一种支持它的语言。基本上没有回来1 (true)或0(false)取决于参数是相等的还是不相等的,太空船运算符将返回10,或−1取决于左参数相对于右参数的值。

a <=> b :=
  if a < b then return -1
  if a = b then return  0
  if a > b then return  1
  if a and b are not comparable then return nil

它对于排序数组很有用。



查看完整回答
反对 回复 2019-10-14
?
斯蒂芬大帝

当您在自己的类中定义宇宙飞船方法并包括可比模块..然后,您的类将获得>, < , >=, <=, ==, and between?免费的方法。

class Card
  include Comparable
  attr_reader :value  def initialize(value)
    @value = value  end

  def <=> (other) #1 if self>other; 0 if self==other; -1 if self<other
    self.value <=> other.value  endenda = Card.new(7)b = Card.new(10)c = Card.new(8)puts a > b 
    # falseputs c.between?(a,b) # true# Array#sort uses <=> :p [a,b,c].sort # [#<Card:0x0000000242d298 @value=7>, 
    #<Card:0x0000000242d248 @value=8>, #<Card:0x0000000242d270 @value=10>]




查看完整回答
反对 回复 2019-10-14
?
慕粉4167745

我将用简单的例子来解释。

  1. [1,3,2] <=> [2,2,2]

    Ruby将从左侧开始比较两个数组的每个元素。1因为左数组小于2正确的排列。因此左数组比右数组小。输出-1.

  2. [2,3,2] <=> [2,2,2]

    如前所述,它将首先比较等于的第一个元素,然后比较第二个元素,在这种情况下,左数组的第二个元素更大,因此输出是1.



查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 67 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信