我需要在Ruby中对一个混合数组进行排序。它包含Fixnum
和String
类型的元素。
ar = [1, "cool", 3, "story", 4, "bro"]
我想让Fixnum
类型的元素优先排列,不关心字符串元素的顺序。
ar = [1,3,4,"cool","story","bro"]
我尝试过为Array
类编写方法。
Class Array
def mixed_sort
self.sort do |a,b|
if a.class == Fixnum and b.class != a.class
-1
else
a <=> b
end
end
end
end
我曾尝试给Array#sort
方法传递一个代码块,但是在执行代码块之前这个方法仍然会抛出一个错误。
[1] pry(main)> [1, "11", '12', 3, "cool"].mixed_sort
ArgumentError: comparison of String with 3 failed
from /config/initializers/extensions/array.rb:3:in `sort'