之前提到过,最近在学Ruby编程语言。
作为新一代的动态语言,Ruby内置了很多强大的内置功能。比如在数组方面,缺省就有排序功能,免去了自己编制排序命令的麻烦。
在缺省情况下,对数组执行.sort就可以返还以递增顺序排序的新数组。但问题在于,若这是一个多维数组,比如二维的,直接执行.sort只会针对第一维排序,若要按照第二维来排序便无法直接操作了。后来查看语法说明,发现利用.sort附带的block功能便可轻松完成相关任务。
在.sort的block中,可以有两个参数,两者之间通过<=>进行比较,所以我们只需要在block中直接指定以两个参数的第二维来比较便可以了。见下面附录程序的第一块。
利用block,我们可以大大的扩充.sort的功能,比如虽然.sort之后再.reverse可以实现递减排序,但更好直接的方法是交换<=>前后的顺序,便可以完成。请注意下面附录程序的第二段。
当然,其实我们不仅可以针对数组中的元素本身排序,还可以针对任何由此衍生出的属性进行排序,比如下面就是比较每个元素的长度,并按照字符长度递增排序。只要愿意,修改就可以实现更多不同种类的排序——比如按照元素中含有某个字母的数量排序等等。

