数组是
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 参考第一个答案。