Ich habe eine Sammlung von Post-Objekten und möchte sie basierend auf diesen Bedingungen sortieren können:
Einige Beiträge haben Daten (Nachrichten und Ereignisse), andere haben explizite Positionen (Labs und Portfolio).
Ich möchte %code% aufrufen können, also habe ich %code% außer Kraft gesetzt, aber ich suche nach dem effektivsten Weg, nach diesen Bedingungen zu sortieren. Unten ist eine Pseudo-Methode:
%Vor%Es sieht so aus, als müsste ich eigentlich zwei getrennte Zeiten sortieren, anstatt alles in diese eine Methode zu stopfen. So etwas wie %code% , dann %code% . Was ist der rubinste Weg, dies zu tun?
Sie sollten immer nach den gleichen Kriterien sortieren, um eine sinnvolle Reihenfolge zu gewährleisten. Wenn man zwei %code% Daten vergleicht, ist es in Ordnung, dass %code% die Reihenfolge beurteilt, aber wenn man ein %code% Datum mit einem festgelegten Datum vergleicht, muss man unabhängig von der Position entscheiden, welche zuerst geht durch Zuordnen von %code% zu einem Tagesweg in der Vergangenheit).
Andernfalls stellen Sie sich Folgendes vor:
%Vor%Nach Ihren ursprünglichen Kriterien hätten Sie: a & lt; b & lt; c & lt; ein. Also, welche ist die kleinste?
Sie möchten die Sortierung auch sofort durchführen. Verwenden Sie für Ihre %code% Implementierung %code% :
%Vor%Wenn Sie Ihre Vergleichskriterien nur einmal verwenden oder wenn dieses Kriterium nicht universell ist und Sie daher %code% nicht definieren möchten, können Sie %code% mit einem Block verwenden:
%Vor%Besser noch, es gibt %code% und %code% , die Sie verwenden können, um ein Array zu erstellen, um zu vergleichen, in welcher Priorität:
%Vor%Neben der kürzeren Verwendung hat %code% den Vorteil, dass Sie nur ein gut geordnetes Kriterium erhalten können.
Anmerkungen:
Alternativ können Sie die Sortierung auf einen Schlag in einem Array durchführen. Der einzige Fall, bei dem eines der Attribute null ist, kann trotzdem gehandhabt werden, wenn Sie den Datensatz kennen, indem Sie den entsprechenden Nullschutz auswählen . Es ist auch nicht aus Ihrem Pseudo-Code klar, wenn die Vergleiche von Datum und Position in einer Prioritätsreihenfolge oder der einen oder der anderen aufgelistet sind (d.h. das Verwendungsdatum, wenn es für beide andere Verwendungspositionen existiert). Die erste Lösung geht von Verwendung, Kategorie, gefolgt von Datum, gefolgt von Position
aus %Vor%Sekunde setzt voraus, dass es sich um ein Datum oder eine Position handelt
%Vor%