ruby中数组的sort_by排序方法使用

Python017

ruby中数组的sort_by排序方法使用,第1张

数组

array = [[1],[2],[3],[0],[1,2],[1,0],[0,1]]

希望排序整个数组,先按照数组 元素个数 ,如果个数相同再 按照首个元素大小

array.sort_by {|a| [a.size, a[0]] }

这个是将一串字符串转化成数组的方法

(1) 在默认无参传入的时候 ,是以空格为间隔 ,获得数组

 pry(main)> " now's the time".split

 => ["now's", "the", "time"]

(2) 如果接受一个字符参数 ,那么会按照这个字符参数进行分割变成数组

pry(main)> "mellow yellow".split("ello")

 => ["m", "w y", "w"]

(3)如果接受的是两个参数 ,后面的参数是用来确定分割数组里面元素的个数,如果在按规则分割的时候 剩下多余的就变成一个元素

pry(main)> "mellow,yellow".split(//,4)

 => ["m", "e", "l", "low,yellow"]

(4)当然split 参数 也接受正则表达式,如下

pry(main)> "hi mom".split(%r{\s*})

 => ["h", "i", "m", "o", "m"]

经常看到一些写法,比如

我们知道, &符号在ruby中是用来调用块的,而 : 符号一般是表示symbol类型,通常用来表示方法,或者调用类的实例变量(实例变量需要在类中用attr_reader或者attr_accessor声明。)

所以,上面的表达方式等同于 array.uniq {|a| a.first}.sort_by {|x| x.last}

即先按照数组的第一个元素去重,然后再按照数组的最后一个元素排序。

http://stackoverflow.com/questions/1217088/what-does-mapname-mean-in-ruby 参考第一个答案。