Ruby 中的 Comparable 模块
在 Ruby 中,可以用Comparable mixin对可以排序的类实例执行排序。类定义需要包含一个运算符,以将接收者相互比较。运算符将返回 -1、0 或 1。
如果接收者小于另一个对象,则它将返回-1。
如果它大于另一个对象,则它将返回1。
如果接收者等于另一个对象,则它将返回0。
在 Comparable 模块中,运算符<=>用于实现常规比较运算符(*、<=、==、>=和>),有时也用作between?方法。
现在我们对 Ruby 中的 Comparable 模块有了一些了解,接下来让我们探索一些相关的示例。
示例 1
考虑如下所示的代码
class TutorialsPoint # comparable module include Comparable attr :key def <=>(other_key) key.length <=> other_key.key.length end def initialize(key) @key = key end end # creating objects a1 = TutorialsPoint.new("T") a2 = TutorialsPoint.new([3, 6]) a3 = TutorialsPoint.new("tuts") # comparable operator puts a1 < a2 # using between? method puts a2.between?(a1, a3) puts a3.between?(a1, a2)
输出
true true false
在上面的示例中,我们只使用了一个运算符进行比较;还有 5 个这样的运算符可用。
示例 2
考虑如下所示的代码,它描述了使用所有这些比较运算符的情况。
class TutorialsPoint # comparable module include Comparable attr :key def <=>(other_key) key.length <=> other_key.key.length end def initialize(key) @key = key end end # creating objects a1 = TutorialsPoint.new("T") a2 = TutorialsPoint.new([3, 6]) a3 = TutorialsPoint.new("tuts") # comparable operators puts a1 < a2 puts a1 <= a2 puts a1 == a2 puts a1 >= a2 puts a1 > a2
输出
true true false false false
广告