Wie kann ich einen "tiefen Vergleich" oder "Diff" auf zwei Structs machen?

8

(Dies ist eine Coldfusion-Frage)

Ich habe zwei verschiedene Structs, die dieselben Daten enthalten können oder auch nicht, und ich möchte sehen können, ob sie das tun! My Structs enthält immer einfache Werte (Numbers, Strings oder Booleans), da sie mit DeserializeJSON erstellt werden, also kann dies hoffentlich leicht gemacht werden.

Ich habe Ben Nadels Post hier gefunden, aber das Technik scheint nicht für mich zu arbeiten. Hier ist, was ich bisher versucht habe (einige cfwheels Code dort):

%Vor%

Und die Ergebnisse sehen so aus:

%Vor%

Wie Sie weiter oben sehen werden, stimmen die Daten in den Structs zwar genau überein, aber sie bestehen den Test Equals () nicht.

Hat jemand anderes dies erfolgreich gemacht?

    
Jordan Sitkin 30.06.2010, 07:13
quelle

5 Antworten

9

Hier ist Bens Lösung schnell an meine Bedürfnisse angepasst, Sie können sie weiter anpassen (und sie hoffentlich noch präterieren):

%Vor%     
zarko.susnjar 30.06.2010, 07:35
quelle
4

Wenn Sie CF9 oder Railo 3

verwenden %Vor%

oder

%Vor%     
Henry 30.06.2010 08:21
quelle
3

In Coldfusion Structures versteckt ist eine praktische kleine Methode namens hashCode (). Beachten Sie, dass dies nicht dokumentiert ist.

%Vor%     
Mister Dai 30.06.2010 08:53
quelle
1

Sie können dies auch mit der systemeigenen Java-Methode durchführen, die vom CFC übernommen wurde.

%Vor%     
Aaron Greenlee 28.12.2010 23:25
quelle
0

Hier ist etwas, das ich schnell zusammengeworfen habe. Es gibt Parameter, um zu bestimmen, ob die Werte und Schlüssel zwischen Groß- und Kleinschreibung unterschieden werden sollen. Werfen Sie diese beiden Funktionen ( StructEquals() , ArrayEquals() ) in eine Art Utilities CFC.

Einschränkung : Funktioniert nicht für Strukturen / Arrays, die Abfragen oder Objekte enthalten.

%Vor%

Komponententests für alle Interessierten:

%Vor%     
Kip 16.01.2018 22:18
quelle

Tags und Links