Dartstringkomparator

10

Was ist der beste Weg, Strings in Dart zu vergleichen? Die String-Klasse enthält keine equals -Methode. Wird == empfohlen?

Zum Beispiel:

%Vor%     
Tiago Pertile 27.04.2013, 18:40
quelle

3 Antworten

10

Ja, == ist die Art zu testen, ob zwei Strings gleich sind (enthalten ausschließlich die gleiche Zeichenfolge). Die letzte Zeile Ihres Codes wird als true ausgewertet.

    
Darshan Rivka Whittle 27.04.2013, 19:00
quelle
3

Strings sind unveränderliche Objekte, dh Sie können sie erstellen, aber Sie können sie nicht ändern. Sie können natürlich eine neue Zeichenfolge aus anderen Zeichenfolgen erstellen, aber sobald sie erstellt wurde, ist der Inhalt der Zeichenfolge behoben.

Dies ist eine Optimierung, da zwei Strings mit denselben Zeichen in der gleichen Reihenfolge das gleiche Objekt sein können.

%Vor%     
SoftwareCarpenter 27.04.2013 19:17
quelle
3

Im Gegensatz zu Java können mit Dart Operatoren wie == überschrieben werden. Sie können also einen eigenen Test für diesen Operator definieren, um die Gleichheit zu prüfen. Sie können auch die identische Funktion verwenden, um zu prüfen, ob zwei Verweise auf dasselbe Objekt (das Äquivalent von == für Objekte in Java ).

Für String ist es ein bisschen besonders. Je nachdem, wie Sie die Zeichenfolge instanziieren, können Sie mit DartVM andere Ergebnisse erzielen:

%Vor%

Wie Sie sehen können identical gibt true nur für den ersten Fall und == immer true zurück. Aber das stimmt nicht immer. Wenn Sie diesen Code nach einer dart2js Kompilierung in Javascript ausführen, geben identical und == immer true zurück.

In den meisten Fällen möchten Sie die Werte von String nicht mit ihren Referenzen vergleichen, deshalb sollten Sie == verwenden.

    
Alexandre Ardhuin 28.04.2013 10:00
quelle

Tags und Links