`sort_by`如何处理多个字段?

时间:2014-02-28 20:55:17

标签: ruby sorting

在以下代码中,due_dateposition是可选字段,而important是一个始终设置为true或{{1}的字段}。

false

我正在试图找出多种排序的工作原理。如果存在posts.sort_by do |post| [post.due_date || 0, post.position || 0, post.important? ? 0 : 1] end ,则它优先或将其设置为零。为什么我们在这里将它设置为零?

1 个答案:

答案 0 :(得分:1)

这里的问题没有特别关于多重比较。如果比较数组,每个元素将与另一个数组中的相应元素进行比较。如果这些值有时取数值,那么它们总是必须是数字。数字无法与nil进行比较,这样做会引发错误。将它们默认为零是为了确保它们是数字。只要将它们默认为数字,就不会引发错误。零的特定选择取决于您希望使用缺失值定位条目的位置;你可以选择无穷大,负无穷大等来获得不同的结果。

相关问题