2010-07-03 50 views

回答

63
arr = arr.sort_by {|x| x.length} 

或者在1.8.7+:

arr = arr.sort_by(&:length) 
+1

對這樣一箇舊帖子發表評論感到抱歉,但是你能解釋一下這個帖子:長度是多少以及它爲什麼起作用?它是否調用方法長度? &的意義何在? – 2015-06-17 13:59:23

+3

@DanR是的,它調用'sort_by'產生的每個項目的'length'方法 - 就像第一行一樣。前綴'&'操作符將一個對象(特別是Proc對象或具有'to_proc'方法的對象,哪些符號對象會這樣做)轉換爲塊。在符號的情況下,該符號將在其參數中使用給定名稱調用該方法(因爲這是'Symbol#to_proc'的定義方式)。 – sepp2k 2015-06-17 14:20:42

9

您還可以使用sort

arr.sort{|x, y| x.length <=> y.length} 
4

arr = arr.sort{|x,y| x.length - y.length}工作過。