【发布时间】:2010-10-22 22:33:50
【问题描述】:
我有一个对象数组,我需要按可以是整数或 nil 的位置属性对其进行排序,并且我需要具有 nil 位置的对象位于数组的末尾。现在,我可以强制该位置返回某个值而不是 nil,这样 array.sort 就不会失败,但是如果我使用 0 作为默认值,那么它会将这些对象放在排序的前面。进行这种排序的最佳方法是什么?我是否应该将 nil 值设置为“几乎”总是保证在最后的一些可笑的高数字?还是有其他方法可以使 array.sort 方法将 nil 属性对象放在数组的末尾?代码如下所示:
class Parent
def sorted_children
children.sort{|a, b| a.position <=> b.position}
end
end
class Child
def position
category ? category.position : #what should the else be??
end
end
现在,如果我将“else”设为 1000000000,那么很可能会将它们放在数组的末尾,但我不喜欢这个解决方案,因为它是任意的
【问题讨论】: