我有一个SizeMatters
从给定字符串创建对象的类。为了对数组中的这些对象进行排序,我实现了该<=>(other)
方法。但以下代码仅有助于按大小对对象进行排序。我还希望数组按字母顺序排序。
class SizeMatters
include Comparable
attr :str
def <=>(other)
str.size <=> other.str.size
end
def initialize(str)
@str = str
end
def inspect
@str
end
end
s1 = SizeMatters.new("Z")
s2 = SizeMatters.new("YY")
s3 = SizeMatters.new("xXX")
s4 = SizeMatters.new("aaa")
s5 = SizeMatters.new("bbb")
s6 = SizeMatters.new("WWWW")
s7 = SizeMatters.new("VVVVV")
[ s3, s2, s5, s4, s1 , s6, s7].sort #[Z, YY, bbb, xXX, aaa, WWWW, VVVVV]
我想要的是这个
[ s3, s2, s5, s4, s1 , s6, s7].sort #[Z, YY, aaa, bbb, xXX, WWWW, VVVVV]
如何编写<=>(other)
以便数组中的对象可以先按大小排序,然后按字母顺序排序?