Jak mogę rozwiązać ten:Jak sortować ciągi znaków Ruby według długości?
arr = ["aaa","aa","aaaa","a","aaaaa"];
do tego?
arr = ["a","aa","aaa","aaaa","aaaaa"];
Jak mogę rozwiązać ten:Jak sortować ciągi znaków Ruby według długości?
arr = ["aaa","aa","aaaa","a","aaaaa"];
do tego?
arr = ["a","aa","aaa","aaaa","aaaaa"];
arr = arr.sort_by {|x| x.length}
Albo w 1.8.7+:
arr = arr.sort_by(&:length)
Można również użyć sort
:
arr.sort{|x, y| x.length <=> y.length}
arr = arr.sort{|x,y| x.length - y.length}
działa zbyt.
Przepraszamy za komentarze na temat tak starego posta, ale czy możesz wyjaśnić, co i: długość jest i dlaczego działa? Czy nazywa się długość metody? Jakie jest znaczenie &? –
@DanR Tak, to wywołanie metody 'length' na każdym elemencie uzyskanym przez' sort_by' - dokładnie tak, jak w pierwszym wierszu. Przedrostek operatora '&' konwertuje obiekt (w szczególności obiekt Proc lub dowolny obiekt, który ma metodę 'to_proc', które obiekty symboli mają) do bloku. W przypadku symboli, które będą blokami, które wywołują metodę o podanej nazwie na jej argumencie (tak definiuje się "Symbol # to_proc"). – sepp2k