« Unobtrusive Javascript | Main | Ruby on Rails Security »

Arrays nach eigenen Regeln sortieren

Wer mit Arrays arbeitet und diese sortieren möchte, kennt sicherlich die sort-Methode - gibts da eigentlich noch was besseres zum sortieren? - von Ruby. Aber irgendwann muß man auch mal "komplexere" Ausrdücke sortieren => eine Anpassung von sort ist notwendig. Ich musste eine Anpassung beim einlesen von Dateinamen machen. Die Dateinamen werden so alphabetisch und nach der Länge sortiert. Das ist aber noch keine "perfekte" Lösung :-).So sieht der sort-Teil aus:

filenames.sort! { |file1, file2|
diff = file1.length - file2.length
if diff == 0
file1 <=> file2
else
diff
end
}

Mit dem <=> kann man die Reihenfolge natürlich auch umkehren.

Mehr zum Thema "Sorting for Humans" gibts auf Coding Horror (via Stefan Tilkov).

An die Ruby-Cracks: Zerreißt meinen Code ruhig, ich will ja was dazulernen :-)!

TrackBack

TrackBack URL for this entry:
http://www.innoq.com/movabletype/mt-tb.cgi/2966

Comments (3)

filenames.sort! { |file1, file2| file1.length file2.length }

# :-)

Tim:

Irgendwie wird das Äquivalentzeichen-Zeichen im Comment nicht angezeigt 0_o!

# jetzt aber!
filenames.sort! { |file1, file2| file1.length file2.length }

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on January 8, 2008 1:46 PM.

The previous post in this blog was Unobtrusive Javascript.

The next post in this blog is Ruby on Rails Security.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31