h = ['1','10','11','2','4']
A. p h.sort
B. p h.sort{|a,b| a.to_i <=> b.to_i}
C. p h.sort_by{|x| x.to_i}
输出如下:
A. ["1", "10", "11", "2", "4"]
B. ["1", "2", "4", "10", "11"]
C. ["1", "2", "4", "10", "11"]
在没有指定块的时候,sort默认的排序是 按着字典 的顺序排序的。
如果指定了块,将数值进行排序是按着 数值 的大小排序的。
sort_by 方法用执行块的代码所生成的结果来排序,对每个元素只执行一次块的调用。比B 的效率快。