我怎麼排序的:如何按長度排序字符串的Ruby數組?
arr = ["aaa","aa","aaaa","a","aaaaa"];
進入這個?
arr = ["a","aa","aaa","aaaa","aaaaa"];
我怎麼排序的:如何按長度排序字符串的Ruby數組?
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
:
arr.sort{|x, y| x.length <=> y.length}
arr = arr.sort{|x,y| x.length - y.length}
工作過。
對這樣一箇舊帖子發表評論感到抱歉,但是你能解釋一下這個帖子:長度是多少以及它爲什麼起作用?它是否調用方法長度? &的意義何在? – 2015-06-17 13:59:23
@DanR是的,它調用'sort_by'產生的每個項目的'length'方法 - 就像第一行一樣。前綴'&'操作符將一個對象(特別是Proc對象或具有'to_proc'方法的對象,哪些符號對象會這樣做)轉換爲塊。在符號的情況下,該符號將在其參數中使用給定名稱調用該方法(因爲這是'Symbol#to_proc'的定義方式)。 – sepp2k 2015-06-17 14:20:42