我该如何对这个进行排序:
arr = ["aaa","aa","aaaa","a","aaaaa"];
进入这个?
arr = ["a","aa","aaa","aaaa","aaaaa"];
arr = arr.sort_by {|x| x.length}
或在 1.8.7+ 版本中:
arr = arr.sort_by(&:length)
sort_by
length
&
to_proc
Symbol#to_proc
您还可以使用sort:
sort
arr.sort{|x, y| x.length <=> y.length}
arr = arr.sort{|x,y| x.length - y.length}也可以实现相同的效果。
arr = arr.sort{|x,y| x.length - y.length}
sort_by
产生的项上调用length
方法 - 就像第一行代码一样。前缀的&
运算符将一个对象(具体来说是Proc对象或任何具有to_proc
方法的对象,比如符号对象)转换为一个块。对于符号而言,它将产生一个块,在其参数上调用具有给定名称的方法(因为这就是Symbol#to_proc
的定义方式)。 - sepp2k